Dependent Advice: A General Approach to Optimizing History-Based Aspects
Source: Association for Computing Machinery
Many aspects for runtime monitoring are history-based: they contain pieces of advice that execute conditionally, based on the observed execution history. History-based aspects are notorious for causing high runtime overhead. Compilers can apply powerful optimizations to history-based aspects using domain knowledge. Unfortunately, current aspect languages like AspectJ impede optimizations, as they provide no means to express this domain knowledge. In this paper the authors present dependent advice, a novel AspectJ language extension. A dependent advice contains dependency annotations that preserve crucial domain knowledge: a dependent advice needs to execute only when its dependencies are fulfilled. Optimizations can exploit this knowledge: they present a whole-program analysis that removes advice-dispatch code from program locations at which an advice's dependencies cannot be fulfilled.
| Format: | Size: | 230.80 | |
| Date: | Mar 2009 |



