Overview

These are benchmarks for our Technical Report Dependent advice: A general approach to optimizing history-based aspects (extended version).

Click on the image to go to the relevant section.
ERE Patterns FTLTL Formulas PTLTL Formulas Tracematch definitions ERE Plugin FTLTL Plugin PTLTL Plugin BTT-FSM Tracematches Dependency Declarations

JavaMOP

While the AspectBench Compiler is maintained on this website, JavaMOP is accessible here.

Input specifications

In the following we list the input specifications that we used for our benchmarks.

Tracematches in the abc compiler

Click here for a description of the tracematch syntax.

You can see all tracematch specifications here.

Extended regular expressions (ERE) in JavaMOP

Click here for a description of JavaMOP's ERE syntax.

You can see all ERE specification patterns here. Remember that some of the tracematch patterns cannot currently be expressed with JavaMOP because JavaMOP currently requires the first event in any specifications to bind all free variables of the specification. (A generalized version is on the way.)

Past-time linear temporal logic (PTLTL) in JavaMOP

Click here for a description of JavaMOP's PTLTL syntax.

You can see all PTLTL specification patterns here.

Future-time linear temporal logic (FTLTL) in JavaMOP

Click here for a description of JavaMOP's FTLTL syntax.

You can see all FTLTL specification patterns here.

Generated history-based aspects (with dependency declarations)

In the following we list the history-based AspectJ aspects that JavaMOP generated from our input specifications. For tracematches remember that we do not actually generate dependent advice in source form but instead directly in the back-end of the abc compiler. However we have a debug option -debug printTMAdviceDeps that prints the generated dependencies to the shell. We list these dependencies below.

Tracematches in the abc compiler

You can see the debug output generated for tracematches here here. Here is a description of the output format.

Extended regular expressions (ERE) in JavaMOP

You can see the history-based aspects generated for our ERE specficiations here.

Past-time linear temporal logic (PTLTL) in JavaMOP

You can see the history-based aspects generated for our PTLTL specficiations here.

Future-time linear temporal logic (FTLTL) in JavaMOP

You can see the history-based aspects generated for our FTLTL specficiations here.

Handcoded history-based aspects

In addition to the auto-generated history-based aspects we further wrote history-based aspects by hand. You can find these aspects here.

Download of all benchmarks, scripts, specifications etc.

In the following we provide all code, scripts and documentation to reproduce our experimental results. If you find the documentation insufficient, please contact Eric Bodden.

Using dependent advice beyond these benchmarks

Using dependent advice is easy. Just download the above abc-complete.jar and then invoke java -cp abc-complete.jar abc.main.Main -ext abc.da, along with the usual abc command line options. If you wish to weave your aspects into Java5 source code, please state -ext abc.ja.da instead to enable our new JastAdd-based Java5-enabled frontend. Note that the latest abc release (as of today, 1.3.0) still only supports abc.da, i.e. Java 1.4 syntax. Also this release contained a minor bug that generated unsound results in very rare cases (none of our benchmarks). This bug was a conceptual mistake, already present in our ECOOP 07 publication. The above abc-complete.jar provides a correct implementation. Click here for details.