The build process requires a number of build time parameters that specify the features and components for a Jikes RVM build. Typically the build parameters are defined within a property file located in the build/configs directory. The following table defines the parameters for the build configuration.
A unique name that identifies the set of build parameters.
Parameter selects the compiler used when creating the bootimage. Must be either opt or base.
Parameter specifies any extra args that are passed to the bootimage compiler.
Parameter selects the compiler used at runtime. Must be either opt or base.
Include the adaptive system if set to true. Parameter will be ignored if config.runtime.compiler is not opt.
The name of the GC plan to use for the build. See MMTk for more details.
Parameter specifying the default initial heap size in MB.
Parameter specifying the default maximum heap size in MB.
Parameter specifies the level of assertions in the code base. Must be one of extreme, normal or none.
The build will stress test the gc subsytem if set to a positive value. The value indicates the number of allocations between collections
Set to true to build Jikes RVM with support for performance counters.
Set to true to build Jikes RVM with GCSpy support. See Using GCSpy for more details.
Set to true to bundle the GCSpy client with the Jikes RVM build. Parameter will be ignored if config.include.gcspy is not true.
Set to true to use the GCSpy stub rather than the real GCSpy component. Parameter will be ignored if config.include.gcspy is not true.
Include all the Jikes RVM classes in the bootimage if set to true.
A typical user will use one of the existing build configurations and thus the build system only requires that the user specify the config.name property. The name should match one of the files located in the build/configs/ directory minus the '
There are many possible Jikes RVM configurations. Therefore, we define four "logical" configurations that are most suitable for casual or novice users of the system. The four configurations are:
The mapping of logical to actual configurations may vary from release to release. In particular, it is expected that the choice of garbage collector for these logical configurations may be different as MMTk evolves.
Logical configurations that are not mentioned here are not recommended for novice users of the system.
Most standard Jikes RVM configuration files follow the following naming scheme:
[ExtremeAssertions] (Base | Full | Fast) (
Adaptive) <garbage collector>
config.assertionsconfiguration parameter is set to
extreme. This turns on a number of expensive assertions.
Adaptivedenotes whether or not the adaptive system and optimizing compiler are included in the build.
Each version of Jikes RVM provides several garbage collector choices. For a definitive list of garbage collector choices, please refer to the configurations that are shipped with your version of Jikes RVM. If you need a configuration that is not available by default, you can just define your own based on the existing ones (it's easy!).
Some garbage collector suffixes that may be available are:
For example, to specify a Jikes RVM configuration:
use the name "
In configurations that include the adaptive system (denoted by "
Adaptive" in their name), methods are initially compiled by one compiler (by default the baseline compiler) and then online profiling is used to automatically select hot methods for recompilation by the optimizing compiler at an appropriate optimization level.
For example, to a build for an adaptive configuration with assertions, where the optimizing compiler is used to compile the boot image and the semi-space garbage collector is used, use the following command:
% ant -Dconfig.name=FullAdaptiveSemiSpace
baseline compiled bootimage with assertions,
baseline compiler at runtime
prototyping; debugging of garbage collector SomeGC without having to worry
about complexities introduced by compiler optimizations; checking for
problems related to uninterruptible code
baseline compiled bootimage with assertions,
baseline compiler, adaptive system and
optimizing compiler at runtime
prototyping that includes optimizing compiler and adaptive system;
debugging of optimizing compiler problems with compiler advice;
sanity checks with comparatively short benchmarks;
checking for problems related to uninterruptible code
bootimage compiled with optimizing compiler
and assertions; everything available at runtime
extensive testing including long-running benchmarks; checking for
incorrect usage of unboxed types
enables all generally useful assertions, including
very expensive ones
|debugging and testing in special cases|
bootimage compiled with optimizing compiler;
assertions disabled; everything available at runtime
|FullBaseSomeGC||INVALID - Full implies Adaptive|
|FastBaseSomeGC||INVALID - Fast implies Adaptive|
INVALID - ExtremeAssertions is incompatible
In Jikes RVM 3.1.3, the mapping between logical configurations and actual configurations is:
|Logical configuration||Actual configuration|