abc Compiler
Download
Report
Transcript abc Compiler
abc Compiler
Zak Fry
Who and Where
Programming Tools
Group at Oxford
University, UK
–
Oege de Moor
Sable Research Group at
McGill University,
Quebec
–
Laurie Hendren
Language and Platform
AspectJ Compiler
–
Aspect Oriented (compliment
to OOP) Extension of Java
developed by Xerox PARC
Standalone with Eclipse
support for generated code
–
Visualization support for
crosscutting concerns
Architecture and Design
Polyglot – frontend that aids in
adding AspectJ to Java
Soot – backend that deals with
bytecode and aids in finding
aspects/weaving
Inputs: .java and .class files
Outputs: AO .java and .class files
Representations
AspectJ AST
Java AST
Aspect Info
–
Instructions for weaver
Jimple
–
–
–
–
Skeleton
Regular IR
Woven IR
Final IR
Uses and Strengths
AspectJ and Aspect Oriented research
–
–
Conversion of OO Java to AO Java
Studying, Analyzing, Improving AO techniques
Strengths
–
–
–
Polyglot - Easy to extend or change aspect output
Soot (Jimple) – ease of translation between
bytecode, Jimple, Java source
Optimization is much higher than competition
Benchmarks
EAJ – redefinition of “adding variables to
pointcuts” – shows ease of adding
functionality to abc (AOSD 2005)
Large study April 2006 of many AspectJ
programs
Also: runtime verification, tracematches
Limitations
Slower than competitor ajc
Requires ALL aspects to be in source
–
No separate compilation
Future Work
Mostly individual extensions corresponding
to individual projects
–
–
–
Monitoring synchronized blocks
Monitoring shared field access
Etc…