Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Quicksilver: a quasi-static compiler for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for efficient reuse of binary code in Java
ICS '01 Proceedings of the 15th international conference on Supercomputing
The Java Language Specification
The Java Language Specification
IBM Systems Journal
Harissa: a flexible and efficient java environment mixing bytecode and compiled code
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Toba: java for applications a way ahead of time (WAT) compiler
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Hi-index | 0.00 |
Although static compilation is one way of improving performance in Java, an enormous amount of effort is required to develop static compilers for the wide variety of platforms (i.e. processors and operating systems) used in embedded devices. We can decrease this development effort by using a Java2C translator, but this approach has a drawback in that we cannot employ platform-dependent techniques for optimizations, such as code-dispatching. This paper presents a portable optimization strategy focusing on class initialization tests in a Java2C translator. A class initialization test checks if a class has been initialized and initializes it if it hasn't. But this test becomes redundant after initialization of the class. We thus improve performance by removing it. In our system, the Java2C translator generates code without class initialization tests. The program is first executed with an interpreter at its start-up until the necessary classes have been initialized. Once class initialization is complete, we use statically compiled code to improve performance. We evaluated our strategy with the SPECjvm98 benchmark suite. Translation without inserting tests improved performance by 44.68%, while the overhead resulting from using an interpreter at the start-up of the program was less than 0.76%.