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.
While the AspectBench Compiler is maintained on this website, JavaMOP is accessible here.
In the following we list the input specifications that we used for our benchmarks.
Click here for a description of the tracematch syntax.
You can see all tracematch specifications here.
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.)
Click here for a description of JavaMOP's PTLTL syntax.
You can see all PTLTL specification patterns here.
Click here for a description of JavaMOP's FTLTL syntax.
You can see all FTLTL specification patterns here.
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.
You can see the debug output generated for tracematches here here. Here is a description of the output format.
You can see the history-based aspects generated for our ERE specficiations here.
You can see the history-based aspects generated for our PTLTL specficiations here.
You can see the history-based aspects generated for our FTLTL specficiations here.
In addition to the auto-generated history-based aspects we further wrote history-based aspects by hand. You can find these aspects here.
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 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.