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.

109<br />

the applications. In addition, because the same constant value may reside<br />

at different locations in different class files, collecting this information<br />

made it possible collect a count for all uses of each unique constant value,<br />

even when those uses were loaded from different constant pool positions.<br />

getfield, putfield, getstatic and putstatic: These bytecodes are<br />

used to access the fields defined within a class. The getfield and putfield<br />

bytecodes are used to read and write instance fields while getstatic<br />

and putstatic are used to access static fields. Two operand<br />

bytes are provided to each of these bytecodes which specify an offset into<br />

the constant pool which contains an element of type CONSTANT Fieldref<br />

info. The information stored in this entry can be used to acquire<br />

the fully qualified name of the field and its type.<br />

6.2 Profile Results<br />

Each of the following subsections examines the operands used by a specific set of<br />

opcodes. The subsections begin by considering load bytecodes, store bytecodes and<br />

constant loading bytecodes. Additional subsections consider the patterns observed in<br />

field accesses and method invocations.<br />

In general, the results presented in the following subsections are averages across all<br />

of the benchmarks considered during this study. These average results were computed<br />

using the technique described in Section 5.1.2 in order to ensure that no one benchmark<br />

was able to skew the distribution of the bytecodes. Some interesting highlights<br />

from specific benchmarks are also included in addition to the average results.<br />

6.2.1 Local Variable Loads<br />

Figure 6.1 presents the most frequently executed load bytecodes. The height of each<br />

bar represents the average percentage of all of the bytecodes executed across the 23<br />

benchmarks tested. Bars on the graph drawn in gray represent specialized bytecodes<br />

while the bars drawn in white represent general purpose bytecodes. Examining the<br />

graph reveals that 6 of the first 10 load bytecodes are specialized. When the first 20<br />

load bytecodes are considered only 8 specialized bytecodes are present. In comparison,<br />

if the selection of specialized load bytecodes was perfect, the first 20 load bytecodes<br />

would be specialized bytecodes.

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

Saved successfully!

Ooh no, something went wrong!