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.

197<br />

performing multicode substitution in the presence of 50 despecializations allowed more<br />

bytecode dispatches to be removed for all of the benchmarks considered except for<br />

201 compress. The 201 compress benchmark performed approximately 0.2 percent<br />

more bytecode dispatches in the presence of 50 despecializations than when multicode<br />

substitution was performed alone. In contrast, performing 50 despecializations<br />

removed 16 percent more bytecode dispatch operations for 222 mpegaudio than performing<br />

multicode substitution alone. The number of bytecode dispatch operations<br />

removed by performing multicode substitution in the presence of 50 despecializations<br />

was 4.4 percent larger for 213 javac and 8.3 percent larger for 228 jack. Only a<br />

very small change in the number of transfers of control was observed for 202 jess<br />

and 209 db.<br />

8.5 Conclusion<br />

This chapter combined the concepts of despecialization and multicode substitution<br />

which were explored in previous chapters. The processes were combined by performing<br />

a set of despecializations, profiling the applications in their despecialized form and<br />

then identifying multicodes from the despecialized profile data.<br />

When multicode substitution was performed in conjunction with 67 despecializations,<br />

a performance loss of approximately 4 percent was observed compared to the<br />

performance achieved when multicode substitution was performed alone. A portion of<br />

the performance loss resulted due to the increased cost associated with executing the<br />

despecialized form of the code stream. It was also observed that for some benchmarks,<br />

performing despecialization decreased the effectiveness of multicode substitution at<br />

reducing the number of transfers of control. This difference also contributed to the<br />

observed performance loss.<br />

A second set of despecializations was also considered in conjunction with multicode<br />

substitution. In this set, 50 bytecodes were despecialized. Those specialized bytecodes<br />

that previously demonstrated the greatest likelihood to increase application runtime<br />

were left in their specialized form while the remaining specialized bytecodes were<br />

replaced with their equivalent general purpose forms. Identifying multicodes in this<br />

environment was shown to provide performance comparable to performing multicode<br />

substitution in the absence of despecialization. Similar performance was achieved<br />

because the despecializations performed were selected so as to minimize the negative<br />

impact on application performance and because performing multicode selection under<br />

these conditions resulted in fewer bytecode dispatches for some benchmarks.

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

Saved successfully!

Ooh no, something went wrong!