- ...
AIX\texttrademark.1
- There was also a partial port available for
Linux/PowerPC, provided by collaborators from the University of
Massachusetts.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
registers.2
- These registers are treated as dedicated, scratch,
volatile (caller-save), or non-volatile (callee-save). Parameters are
passed in volatile registers. Intermediate results can be accumulated
in volatile or scratch registers. Non-volatile registers retain their
value across method calls.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
problems3
- PowerPC is ``big endian'' -- the high-order byte of
a word is at the lowest address within it -- while IA32 is ``little
endian''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... Java.4
- In
addition, the Jikes RVM source tree contains several tools used in the
build process (5,600 lines) and the jdp debugger (33,300 lines).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... text.5
- To
keep down instances of this rather ugly feature, we try to limit it
usage to three cases: to define a control, to reference a class that
would not otherwise be loaded, or to define or reference a field that
would not otherwise be needed. In the 162,000 lines of platform
independent Java code, there are 38 preprocessor blocks impacting 479
lines of source code that are related to the choice between
AIX/PowerPC or Linux/IA32.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... backend,6
- The original PowerPC
compilers each had their own assemblers.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... instruction.7
- On the PowerPC architecture, the
baseline compiler expends unnecessary extra work pushing the unused
middle parameter onto the stack. However, the optimizing compiler
identifies the computation as dead and eliminates it. Thus,
the optimizing compiler produces code for the prepare and attempt primitives that is as efficient as architecture-specific primitives.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... problem.8
- It remains in
the 2.4 Linux/PowerPC release.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
performance9
- The Jikes RVM FastAdaptiveSemispace images, used
for Figures 2 and 3,
gives the best overall performance due to feedback-directed
optimization and delayed compilation
effects [4]. However, to reduce the impact of
timer-driven non-deterministic actions, the remainder of this paper
reports results using a (non adaptive) FastSemispace image which
compiles each method the first time it is invoked at optimization
level O2. In all cases, two virtual processors and a 400 MB heap were
used. All runs are on a 4-way IBM Netfinity with 700MHz
Pentium III processors and 3 GB of memory. The Linux
installation is a customized RedHat version with a 2.4.12 kernel and
GNU Libc version 2.2.4; the libc and kernel versions support the
version of LinuxThreads that uses the GS segment register for
thread-local storage enabling it to support Jikes RVM's user-level
multithreading mechanism.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... benchmarks10
- These benchmarks were developed
by the Standard Performance Evaluation Corporation [6].
The performance numbers reported in this paper are the best run of 5
on each individual SPECjvm98 benchmark. These runs do not
conform to the official SPEC run rules, so our results do not directly
or indirectly represent a SPECjvm98 metric, and are not comparable
with a SPECjvm98 metric.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... performance.11
- During
the six month period shown in Figure 2 several
new platform independent optimizations were added to the optimizing
compiler and existing optimizations were enhanced. Although these
contributed to the performance improvements shown in the graph, most
of the gain was caused by IA32 specific improvements (during the same
period AIX/PowerPC performance only improved by about 10%).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... trees12
- A tree is ready if
all of the trees on which it is dependent have already been emitted.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... ways.13
- We have
not performed an apples-to-apples comparison of our algorithm compared to
Traub et al.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.