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.

Property

Description

Default

config.name

A unique name that identifies the set of build parameters.

None

config.bootimage.compiler

Parameter selects the compiler used when creating the bootimage. Must be either opt or base.

base

config.bootimage.compiler.args

Parameter specifies any extra args that are passed to the bootimage compiler.

""

config.runtime.compiler

Parameter selects the compiler used at runtime. Must be either opt or base.

base

config.include.aos

Include the adaptive system if set to true. Parameter will be ignored if config.runtime.compiler is not opt.

false

config.mmtk.plan

The name of the GC plan to use for the build. See MMTk for more details.

None

config.default-heapsize.initial

Parameter specifying the default initial heap size in MB.

20

config.default-heapsize.maximum

Parameter specifying the default maximum heap size in MB.

100

config.assertions

Parameter specifies the level of assertions in the code base. Must be one of extreme, normal or none.

normal

config.stress-gc-interval

The build will stress test the gc subsytem if set to a positive value. The value indicates the number of allocations between collections

0

config.include.perfevent

Set to true to build Jikes RVM with support for performance counters.

false

config.include.gcspy

Set to true to build Jikes RVM with GCSpy support. See Using GCSpy for more details.

false

config.include.gcspy-client

Set to true to bundle the GCSpy client with the Jikes RVM build. Parameter will be ignored if config.include.gcspy is not true.

false

config.include.gcspy-stub

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.

false

config.include.all-classes

Include all the Jikes RVM classes in the bootimage if set to true.

false

Jikes RVM Configurations

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 '.properties' extension.

Logical Configurations

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.

Configurations in Depth

Most standard Jikes RVM configuration files loosely follow the following naming scheme:

<boot image compiler> Base"|"Adaptive" <garbage collector>
where

The following garbage collection suffixes are available:

For example, to specify a Jikes RVM configuration:

  1. with a baseline-compiled boot image,
  2. that will compile classes loaded at runtime using the baseline compiler and
  3. that uses a non-generational semi-space copying garbage collector,

use the name "BaseBaseSemiSpace".

Some files augment the standard configurations as follows:

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, 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=OptAdaptiveSemiSpace