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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

108<br />

symjpack-t: This benchmark performs symbolic computations including<br />

differentiation and integration.<br />

jpat-p: A tool that performs a protein digestion operation on a protein<br />

sequence containing approximately 62000 elements.<br />

rhino-a: This benchmark is a JavaScript interpreter implemented in<br />

Java. It runs a script on a set of Java source files which verifies that the<br />

@params tags match the formal parameters defined for the corresponding<br />

Java method.<br />

javasrc-p: A set of files containing Java source code are converted into<br />

HTML documents. The output format is similar to that of javadoc.<br />

Linpack: A dense system of linear equations is solved using Gaussian<br />

elimination with partial pivoting.<br />

When profiling was conducted each opcode executed by the application was recorded<br />

along with its operands (if any). Additional information was also recorded for some<br />

bytecodes, allowing a more meaningful analysis to be performed. Those bytecodes<br />

for which extra data was collected, and the nature of that data, are described in the<br />

following paragraphs.<br />

invoke*: A two-byte operand is provided to each of the invoke* bytecodes.<br />

This operand specifies an offset into the constant pool that contains<br />

an element that stores a method reference. Parsing the method<br />

reference provides the method’s fully qualified name and its descriptor.<br />

The method’s descriptor is a string that describes the static types of all of<br />

the method’s arguments and the method’s return type. Consequently, this<br />

information is sufficient to determine many attributes about the method<br />

including what package the invoked method resided in, the number of arguments<br />

passed to the method and how many of the method’s arguments<br />

were object references, doubles, floats, integers and longs.<br />

ldc, ldc w and ldc2 w: Each of these bytecodes defines an offset into<br />

the constant pool which contains a constant value. The extra information<br />

recorded for this bytecode includes both the value of the constant and its<br />

type. Recording this information was valuable for two reasons. First, it<br />

made it possible to evaluate the distribution of the constant values used by

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

Saved successfully!

Ooh no, something went wrong!