Next: Optimizing Compiler
Up: Establishing functionality
Previous: IA32 Assembler
A baseline compiler actually consists of two main components of
roughly equal size: a target-independent portion that is responsible
for generating GC maps and other descriptive information and a
target-specific code generator. The heart of baseline compiler code generation
executes a switch statement that emits
code for each Java bytecode. Most of these 209 cases present simple
exercises that are ``solved'' by emitting a dozen or fewer straight
line assembler instructions. For those cases that are more
complicated -- for instance, the seven bytecodes that sometimes
entail class loading -- the internal structure of the case was
imported from the PowerPC baseline compiler. We were careful to
verify that each case (except for some of the ``wide'' variants)
were exercised against a library of bytecode tests developed
in conjunction with that original baseline compiler.
Stephen Fink
2002-05-23