mbuild build system
Workspace containing the implementation of our optimizations, BestLap and MobileMedia
Benchmarks used in our work

Both BestLap Versions


The file build/common.properties contains the properties that specify which compiler to use.

aspects.enabled: if true, try to copy aspects, if any, and use one of the AspectJ compilers
aspects.compiler: accepts the values ajc and abc

For compiling using abc without our optimizations, lines 879 to 881 of the file build.xml of the mbuild system must be commented. For compiling using abc with our optimizations, leave these lines uncommented.

The mbuild build system requires that the environment variable MBUILD_HOME points to the root directory of mbuild and that the environment variable WTK_HOME points to the location of Sun's WTK.

It is also recommended to point the environment variable JAVA_HOME to the location of the JDK.

To build the original version of BestLap with the three compilers the following combinations of the two properties are used:

javac
do not define the two properties

ajc
aspects.enabled = true
aspects.compiler = ajc

abc
aspects.enabled = true
aspects.compiler = abc

For the hybrid version, use the definition for ajc and abc above. However, remember to uncomment lines 879 to 881 of the build.xml file of mbuild for compiling our with optimizations.

We compiled the english version of BestLap in our study. In order to start the build process, open the project in Eclipse, select the build/build.xml file and drag it to the ant view and and execute the task build_all_en.

The compiled build files will be located in the directory build/release.

Our optimizations are in the Eclipse project "abc fhcl optimizations", where their source code is located. To generate the jar with our optimizations used in mbuild, execute the default ant target of the file build.xml located in the root of the project.

A file called flip_opt_abc will be generated in the build directory. This file should be copied to the tools/abc directory of mbuild.

MobileMedia


We used version 8 of MobileMedia in our study. The Eclipse projects of the CC version and the AO version are in the workspace linked at the beginning of this page.

The CC version has a file called labBuild.properties in its root directory. This file contains the definition of all instances. Example:

# Instance A01 (Photo)
preprocessor.symbols=device_screen_132x176, includePhotoAlbum

To compile each instance, comment the definition of the others and uncomment the definition of the one you wish to compile.

The variables at the beginning of this file must be updated to point to the correct location of WTK, JDK, antenna and aspectj related directories and jars.

Also, in the build.xml file, the property mbuild.home must point to the location of the mbuild sytem.

All of these properties must also be updated in the AO version.

The AO version has a build specification file for each instance. MobileMediaA01.lst, for instance, specifies the A01 instance.

To define which instance to compile, the property files.list in labBuild.properties must be altered to point to the instance you wish to compile.

In both versions, the target full-build of the build.xml file must be called to compile the instance, which is generated in the jars directory.


Benchmarks


We used cygwin to execute the shell scripts that compile and run the benchmarks. The benchmarks should be unzipped in the root directory of the cygwin shell user. The benchmarks used were:


The JAVA_HOME file in the root directory of the benchmarks must be updated to point to the location of the JDK. In order to compile the benchmarks, the following command must be used:
./compile ajc "benchmark name"
./compile abc "benchmark name"
./compile abcx "benchmark name"

The last one is the one with our optimizations. In order to run the benchmarks, the following command must be used:
./run "compilation used" "benchmark name"

The run time will be shown after the execution of the benchmark. We used the -Xprof option of java to display the run time of each benchmark.