Flexible and efficient measurement of dynamic bytecode metrics

Code instrumentation is finding more and more practical applications, but the required program transformations are often difficult to implement, due to the lack of dedicated, high-level tools. In this paper we present a novel instrumentation framework that supports the partial evaluation of compiled Java code transformation templates, with the goal of efficiently measuring chosen dynamic bytecode and control flow metrics. This framework, as well as the instrumentation code it generates, is implemented in pure Java and hence completely platform-independent. We show the benefits of our approach in several application areas, such as platform-independent resource management and profiling of software components.

[1]  Mike P. Papazoglou,et al.  Introduction: Service-oriented computing , 2003, CACM.

[2]  Matthew Arnold,et al.  A framework for reducing the cost of instrumented code , 2001, PLDI '01.

[3]  James David Turner A dynamic prediction and monitoring framework for distributed applications , 2003 .

[4]  Sheng Liang,et al.  Comprehensive Profiling Support in the Java Virtual Machine , 1999, COOTS.

[5]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[6]  Matthias Hauswirth,et al.  Vertical profiling: understanding the behavior of object-priented applications , 2004, OOPSLA.

[7]  Hidehiko Masuhara,et al.  Dataflow Pointcut in Aspect-Oriented Programming , 2003, APLAS.

[8]  Brian F. Cooper,et al.  ProfBuilder: A Package for Rapidly Building Java Execution Prolers , 1998 .

[9]  Éric Tanter,et al.  Altering Java Semantics via Bytecode Manipulation , 2002, GPCE.

[10]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[11]  Walter Binder,et al.  A Portable and Customizable Profiling Framework for Java Based on Bytecode Instruction Counting , 2005, APLAS.

[12]  Markus Dahm,et al.  Byte Code Engineering , 1999, Java-Informations-Tage.

[13]  Shigeru Chiba,et al.  Josh: an open AspectJ-like language , 2004, AOSD '04.

[14]  Walter Binder,et al.  Program transformations for portable CPU accounting and control in Java , 2004, PEPM '04.

[15]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[16]  James R. Larus,et al.  Optimally profiling and tracing programs , 1994, TOPL.

[17]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

[18]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[19]  Walter Binder,et al.  Portable resource control in Java , 2001, OOPSLA '01.

[20]  Laurie J. Hendren,et al.  *J: a tool for dynamic analysis of Java programs , 2003, OOPSLA '03.

[21]  BinderWalter Portable and accurate sampling profiling for Java , 2006 .

[22]  Middleware Track A Portable CPU-Management Framework for Java , 2004 .

[23]  Walter Binder,et al.  Portable and accurate sampling profiling for Java , 2006, Softw. Pract. Exp..

[24]  Sheng Liang,et al.  Java Virtual Machine Profiler Interface , 2000, IBM Syst. J..

[25]  Matthias Hauswirth,et al.  Using Hardware Performance Monitors to Understand the Behavior of Java Applications , 2004, Virtual Machine Research and Technology Symposium.

[26]  Muga Nishizawa,et al.  An Easy-to-Use Toolkit for Efficient Java Bytecode Translators , 2003, GPCE.

[27]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[28]  Naoyasu Ubayashi,et al.  Association aspects , 2004, AOSD '04.

[29]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.

[30]  Laurie Hendren,et al.  Dynamic metrics for java , 2003, OOPSLA 2003.

[31]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.