OOPSLA '04

Program
Technical Program
  Invited Speakers
  Technical Papers
  Onward!
  Panels
  Practitioner Reports
  Tutorials
Workshops
DesignFest
Educators' Symposium
Demonstrations
Posters
Doctoral Symposium
Exhibits
Student Research Comp.
FlashBoF
 
Turing Lecture
 
Social Events
 
Week at a Glance
 
Final Program (1.5M .pdf)

Find in Program
 

Page
Printer-friendly

Basket
view, help

"Instrumentation of Standard Libraries in Object-Oriented Languages: the Twin Class Hierarchy Approach"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps
 
  > Technical Program > Technical Papers > Performance

 : Wednesday

Instrumentation of Standard Libraries in Object-Oriented Languages: the Twin Class Hierarchy Approach

Ballroom A-B
Wednesday, 16:30, 30 minutes
 


 
7·8·9·10·11·12·13·14·15·16·17·18·19·20·21

Konstantin Shagin, Technion—Israel Institute of Technology
Assaf Schuster, Technion—Israel Institute of Technology
Michael Factor, IBM Research Lab in Haifa

Code instrumentation is widely used for a range of purposes including 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, since it is equivalent to "instrumenting the instrumentation," it 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. Our approach 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 modifying any runtime components. We demonstrate our approach by implementing two instrumentation-based systems: a memory profiler and a distributed runtime for Java.