The Jikes RVM adaptive system uses the compiler DNA found in org.jikesrvm.adaptive.recompilation.CompilerDNA. The important values in here are the compilationRates and the speedupRates. If you modify Jikes RVM then it's likely you need to recalibrate the adaptive system for your changes. The following are the steps you need to perform to do this:

  1. run the compiler-dna test harness ("ant -f test.xml -Dtest-run.name=compiler-dna"). This will automatically compile and run Jikes RVM on SPEC JVM '98. You will want to configure the ant property external.lib.dir to be a directory containing your SPEC JVM '98 directory. Your SPEC JVM '98 directory must be named "SPECjvm98".
  2. load the xml file "results/tests/compiler-dna/Report.xml" into either an XML viewer (such as a web browser) or into a text editor
  3. find the section named Measure_Compilation_Base, then look within this section for statistics and find the static Base.bcb/ms. For example, '<statistic key="Base.bcb/ms" value="1069.66"/>'. In the compilationRates array this will be the value of element 0, it corresponds to how many bytecodes the baseline compiler can compile per millisecond.
  4. find the section named Measure_Compilation_Opt_0 and the statistic Opt.bcb/ms. This is element 1 in the compilationRates array.
  5. find the section named Measure_Compilation_Opt_1 and the statistic Opt.bcb/ms. This is element 2 in the compilationRates array.
  6. find the section named Measure_Compilation_Opt_2 and the statistic Opt.bcb/ms. This is element 3 in the compilationRates array.
  7. find the section named Measure_Performance_Base and the statistic named aggregate.best.score and record its value. For example, for '<statistic key="aggregate.best.score" value="28.90"/>' you would record 28.90.
  8. find the section named Measure_Performance_Opt_0 and the statistic named aggregate.best.score. Divide this value by the value you recorded in step 7, this is the value for element 1 in the speedupRates array. For example, for '<statistic key="aggregate.best.score" value="137.50"/>' the speedupRates array element 1 should have a value of 4.76.
  9. find the section named Measure_Performance_Opt_1 and the statistic named aggregate.best.score. As with stage 8 divide this value by the value recorded in step 7, this is the value for element 2 in the speedupRates array.
  10. find the section named Measure_Performance_Opt_2 and the statistic named aggregate.best.score. As with stage 8 divide this value by the value recorded in step 7, this is the value for element 3 in the speedupRates array.

You should then save CompilerDNA and recompile a production RVM which will use these values.

 If you are frequently changing the compiler dna, you may want to use the command line option -X:aos:dna=<file name> to dynamically load compiler dna data without having to rebuild Jikes RVM.