Report ID
2002-26
Report Authors
C. Krintz
Report Date
Abstract
Dynamic compilation and optimization are widely used for Internetcomputing, in which an intermediate form of the code is compiledto native code during execution. An important tradeoff existsbetween the amount of time spent dynamically optimizing theprogram and the overall runtime of the program. Sinceoptimization occurs while the program is executing,it introduces runtime overhead. For Java programs, this overheadcan be substantial due to compilation effort required to convertbytecode to highly efficient machine code.In this paper, we describe a novel execution environment for Javaprograms that substantially reduces the overhead due tocompilation and optimization by couplingtwo key dynamic compilation technologies: adaptive optimizationand annotation-guided optimization. In the former, profiles arecollected using on-line instrumentation and sampling ofdynamic profile data. In the latter, off-line profiles aregenerated, encoded compactly, and transported with the program filesfor use by a dynamic optimization system.Both methodologies (adaptation and annotation), when used alone,have drawbacks: adaptation introduces overhead for on-lineinstrumentation, measurement, and decision making, and annotationsbased on off-line profile information can be inaccurate when programinputs for execution and optimization differ from those used forprofiling. To combat these drawbacks and to achieve the benefitsfrom both on-line and off-line profiling, we developed a dynamiccompilation system (based on JikesRVM) that makes use of both.As a result, we are able improve Java program performance by9-15% on average, for the programs studied.
Document
2002-27.ps308.54 KB