Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Automatic program specialization for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Declarative specialization for object-oriented-program specialization
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
A compilation and optimization model for aspect-oriented programs
CC'03 Proceedings of the 12th international conference on Compiler construction
Composition of dynamic analysis aspects
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
An overview of ALIA4J: an execution model for advanced-dispatching languages
TOOLS'11 Proceedings of the 49th international conference on Objects, models, components, patterns
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
ALIA4J's [(just-in-time) compile-time] MOP for advanced dispatching
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
DiSL: a domain-specific language for bytecode instrumentation
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Verification of java bytecode using analysis and transformation of logic programs
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Challenges for refinement and composition of instrumentations: position paper
SC'12 Proceedings of the 11th international conference on Software Composition
Introduction to dynamic program analysis with DiSL
Proceedings of the 4th ACM/SPEC International Conference on Performance Engineering
Hi-index | 0.00 |
Bytecode instrumentation is a key technique for the implementation of dynamic program analysis tools such as profilers and debuggers. Traditionally, bytecode instrumentation has been supported by low-level bytecode engineering libraries that are difficult to use. Recently, the domain-specific aspect language DiSL has been proposed to provide high-level abstractions for the rapid development of efficient bytecode instrumentations. While DiSL supports user-defined expressions that are evaluated at weave-time, the DiSL programming model requires these expressions to be implemented in separate classes, thus increasing code size and impairing code readability and maintenance. In addition, the DiSL weaver may produce a significant amount of dead code, which may impair some optimizations performed by the runtime. In this paper we introduce Turbo, a novel partial evaluator for DiSL, which processes the generated instrumentation code, performs constant propagation, conditional reduction, and pattern-based code simplification, and executes pure methods at weave-time. With Turbo, it is often unnecessary to wrap expressions for evaluation at weave-time in separate classes, thus simplifying the programming model. We present Turbo's partial evaluation algorithm and illustrate its benefits with several case studies. We evaluate the impact of Turbo on weave-time performance and on runtime performance of the instrumented application.