Partial Evaluation of Pointcuts

In aspect-oriented programming, pointcuts are usually compiled by identifying a set of shadows — that is, places in the code whose execution is potentially relevant for a pointcut — and inserting dynamic checks at these places for those parts of the pointcut that cannot be evaluated statically. Today, the algorithms for shadow and check computation are specific for every pointcut designator. This makes it very tedious to extend the pointcut language. We propose the use of declarative languages, together with associated analysis and specialisation tools, to implement powerful and extensible pointcut languages. More specifically, we propose to synthesize (rather than program manually) the shadow and dynamic check algorithms. With this approach, it becomes easier to implement powerful pointcut languages efficiently and to keep pointcut languages open for extension.

[1]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

[2]  Wim Vanhoof,et al.  Specialising Interpreters Using Offline Partial Deduction , 2004, Program Development in Computational Logic.

[3]  Mitchell Wand A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming , 2001, SAIG.

[4]  Michael Haupt,et al.  Virtual machine support for dynamic join points , 2004, AOSD '04.

[5]  Qian Wang,et al.  Towards Provably Correct Code Generation via Horn Logical Continuation Semantics , 2005, PADL.

[6]  Stefan Hanenberg,et al.  Morphing aspects: incompletely woven aspects and continuous weaving , 2004, AOSD '04.

[7]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[8]  Robert J. Walker,et al.  Communication History Patterns: Direct Implementations of Protocol Specifications , 2004 .

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

[10]  Zoltan Somogyi,et al.  The Execution Algorithm of Mercury, an Efficient Purely Declarative Logic Programming Language , 1996, J. Log. Program..

[11]  Hidehiko Masuhara,et al.  A Compilation and Optimization Model for Aspect-Oriented Programs , 2003, CC.

[12]  Radha Jagadeesan,et al.  A Calculus of Untyped Aspect-Oriented Programs , 2003, ECOOP.

[13]  Michael Eichberg,et al.  XIRC: a kernel for cross-artifact information engineering in software development environments , 2004, 11th Working Conference on Reverse Engineering.

[14]  Klaus Ostermann,et al.  Back to the Future: Pointcuts as Predicates over Traces , 2005 .

[15]  Miguel Calejo InterProlog: Towards a Declarative Embedding of Logic Programming in Java , 2004, JELIA.

[16]  Paul Tarau,et al.  Garbage Collection Algorithms for Java-Based Prolog Engines , 2003, PADL.

[17]  Michael Eichberg,et al.  Pointcuts as Functional Queries , 2004, APLAS.

[18]  Wim Vanhoof,et al.  Offline specialisation in Prolog using a hand-written compiler generator , 2002, Theory and Practice of Logic Programming.

[19]  Oege de Moor,et al.  Static analysis of aspects , 2003, AOSD '03.

[20]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[21]  Alexander Aiken,et al.  Relational queries over program traces , 2005, OOPSLA '05.

[22]  Ralf Lämmel,et al.  A semantical approach to method-call interception , 2002, AOSD '02.

[23]  John P. Gallagher,et al.  Fully Automatic Binding-Time Analysis for Prolog , 2004, LOPSTR.

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

[25]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[26]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.