Generating Efficient Stack Code for Java

Loading...
Thumbnail Image

Files

CS-TR-4069.ps (127.77 KB)
No. of downloads: 209
CS-TR-4069.pdf (153.61 KB)
No. of downloads: 1138

Publication or External Link

Date

1999-10-09

Advisor

Citation

DRUM DOI

Abstract

Optimizing Java byte code is complicated by the fact that it uses a stack-based execution model. Changing the intermediate representation from the stack-based to the register-based one brings the problem of Java byte code optimizations into well-studied domain of compiler optimizations for register-based codes. In this paper we describe the technique to convert a register-based code into the Java byte code. The code generation techniques developed for the stack-based computers are not directly applicable to this problem as the comparative cost of the local memory and stack manipulation instructions in JVM is quite different from that in the stack-based computers. Naive verbose translation of the register-based code into the Java byte code produces the code with many redundant store and load instructions. The tool that we have developed allows to remove 90-100 % of the stores to the local (i.e., non-global) variables. It produces the Java byte code that is slightly faster and shorter than the original byte code even when no optimizations except for register allocation are performed on the register-based code.

Notes

Rights