13.10.2014 Views

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

OPTIMIZING THE JAVA VIRTUAL MACHINE INSTRUCTION SET BY ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

132<br />

Chapter 7<br />

Multicodes<br />

This chapter introduces multicodes, an optimization technique designed to improve<br />

the performance of Java interpreters. A multicode is a new bytecode that performs<br />

the same behaviour as a collection of two or more existing bytecodes, when they<br />

are found in a contiguous sequence. The optimization technique works by reducing<br />

the amount of overhead imposed by the Java Virtual Machine, resulting in reduced<br />

application run time. Identifying commonly occurring bytecode sequences is the<br />

first step in the multicode optimization process. Once the sequences are identified,<br />

occurrences of those sequences within the class files that make up the application and<br />

the Java library are replaced with the multicode, reducing the number of fetch-decodeexecute<br />

operations that must be performed, and opening up additional optimization<br />

opportunities. Multicodes are not defined by a static specification like bytecodes are.<br />

Instead, they are more dynamic entities that can vary from application to application,<br />

which are automatically identified by the techniques described in this thesis.<br />

7.1 Definitions<br />

The following terms will be used throughout the remainder of the thesis.<br />

Codelet: The set of statements within the Java interpreter that implement<br />

the task specified by a Java bytecode (or multicode).<br />

Basic Block: “A sequence of consecutive statements in which flow of<br />

control enters at the beginning and leaves at the end without halt or<br />

possibility of branching except at the end” [12].<br />

Multicode Block: The notion of a multicode block is similar to that of<br />

a basic block. However, there are several distinctions. In particular, a

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!