abc compiler

9
abc Compiler Zak Fry

Upload: roary-kirk

Post on 31-Dec-2015

19 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: abc Compiler

abc Compiler

Zak Fry

Page 2: abc Compiler

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

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

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

Representations

AspectJ AST Java AST Aspect Info

– Instructions for weaver

Jimple– Skeleton– Regular IR– Woven IR– Final IR

Page 6: abc Compiler

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

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

Limitations

Slower than competitor ajc Requires ALL aspects to be in source

– No separate compilation

Page 9: abc Compiler

Future Work

Mostly individual extensions corresponding to individual projects– Monitoring synchronized blocks– Monitoring shared field access– Etc…