Download - abc Compiler
![Page 1: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/1.jpg)
abc Compiler
Zak Fry
![Page 2: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/2.jpg)
Who and Where
Programming Tools Group at Oxford University, UK– Oege de Moor
Sable Research Group at McGill University, Quebec – Laurie Hendren
![Page 3: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/3.jpg)
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
![Page 4: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/4.jpg)
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
![Page 5: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/5.jpg)
Representations
AspectJ AST Java AST Aspect Info
– Instructions for weaver
Jimple– Skeleton– Regular IR– Woven IR– Final IR
![Page 6: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/6.jpg)
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
![Page 7: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/7.jpg)
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
![Page 8: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/8.jpg)
Limitations
Slower than competitor ajc Requires ALL aspects to be in source
– No separate compilation
![Page 9: abc Compiler](https://reader036.vdocuments.site/reader036/viewer/2022082818/56812dd3550346895d931996/html5/thumbnails/9.jpg)
Future Work
Mostly individual extensions corresponding to individual projects– Monitoring synchronized blocks– Monitoring shared field access– Etc…