ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
A Bytecode Translator for Distributed Execution of ``Legacy'' Java Software
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
J-Orchestra: Automatic Java Application Partitioning
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Load-Time Adaptation: Efficient and Non-Intrusive Language Extension for Virtual Machines
Load-Time Adaptation: Efficient and Non-Intrusive Language Extension for Virtual Machines
Automatic program transformation with JOIE
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Automatic test factoring for java
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
A platform-independent distributed runtime for standard multithreaded Java
International Journal of Parallel Programming
Transparent program transformations in the presence of opaque code
Proceedings of the 5th international conference on Generative programming and component engineering
Aspect weaving in standard Java class libraries
Proceedings of the 6th international symposium on Principles and practice of programming in Java
CCCP: complete calling context profiling in virtual execution environments
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Classifying Java class transformations for pervasive virtualized access
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Composition of dynamic analysis aspects
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Experimental comparison of concolic and random testing for java card applets
SPIN'10 Proceedings of the 17th international SPIN conference on Model checking software
Polymorphic bytecode instrumentation
Proceedings of the tenth international conference on Aspect-oriented software development
Comprehensive aspect weaving for Java
Science of Computer Programming
An instrumentation infrastructure for grid workflow applications
ODBASE'06/OTM'06 Proceedings of the 2006 Confederated international conference on On the Move to Meaningful Internet Systems: CoopIS, DOA, GADA, and ODBASE - Volume Part II
Heap cloning: Enabling dynamic symbolic execution of java programs
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
ShadowVM: robust and comprehensive dynamic program analysis for the java platform
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
Code instrumentation is widely used for a range of purposes that include profiling, debugging, visualization, logging, and distributed computing. Due to their special status within the language infrastructure, the standard class libraries, also known as system classes provided by most contemporary object-oriented languages are difficult and sometimes impossible to instrument. If instrumented, the use of their rewritten versions within the instrumentation code is usually unavoidable. However, this is equivalent to `instrumenting the instrumentation', and thus may lead to erroneous results. Consequently, most systems avoid rewriting system classes. We present a novel instrumentation strategy that alleviates the above problems by renaming the instrumented classes. The proposed approach does not require any modifications to the language, compiler or runtime. It allows system classes to be instrumented both statically and dynamically. In fact, this is the first technique that enables dynamic instrumentation of Java system classes without modification of any runtime components. We demonstrate our approach by implementing two instrumentation-based systems: a memory profiler and a distributed runtime for Java.