WG211/M2Demoor
Title:
Adding tracecuts to AspectJ
Oege de Moor
Abstract: Conceptually, in AspectJ we transform computations rather than program texts: an aspect observes the execution of a base program, and when certain events occur, the aspect runs some extra code of its own. The events that trigger extra code are specified via patterns called `pointcuts'.
In AspectJ, pointcuts can inspect the current callstack, but not the history of a computation. A number of authors have suggested it would be useful to write patterns that range over traces rather than individual events: such patterns are called `tracecuts'.
In this talk, I'll present a number of example tracecuts, discuss how to integrate the feature into the existing AspectJ language, and sketch a semantics. The design has been implemented in abc, an extensible compiler for AspectJ.
(joint work with Chris Allan)