Fast, effective code generation in a just-in-time Java compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th 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
TurboJ, a Java Bytecode-to-Native Compiler
LCTES '98 Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems
Coupling on-line and off-line profile information to improve program performance
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Efficient JavaVM Just-in-Time Compilation
PACT '98 Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques
A brief history of just-in-time
ACM Computing Surveys (CSUR)
Adaptive code unloading for resource-constrained JVMs
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Jazzing up JVMs with off-line profile data: does it pay?
ACM SIGPLAN Notices
Improving virtual machine performance using a cross-run profile repository
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
Local variable access behavior of a hardware-translation based Java virtual machine
Journal of Systems and Software
Client ahead-of-time compiler for embedded Java platforms
Software—Practice & Experience
A method-based ahead-of-time compiler for android applications
CASES '11 Proceedings of the 14th international conference on Compilers, architectures and synthesis for embedded systems
Reuse of JIT compiled code in JavaScript engine
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Reuse of JIT compiled code based on binary code patching in JavaScript engine
Journal of Web Engineering
Hi-index | 0.00 |
The performance of embedded Java virtual machine can be improved by ahead-of-time compiler (AOTC), which translates bytecode into machine code in the server and installs the machine code on the client device. Although AOTC is more advantageous than just-in-time compiler (JITC) due to its absence of the translation overhead, AOTC cannot be applicable to dynamically downloaded classes at runtime. This paper proposes client-AOTC (c-AOTC) which performs AOTC on the client device using the JITC module installed on the device, complementing the server-AOTC. The machine code of a method translated by JITC is cached on a persistent memory of the device, and when the method is invoked again in a later run of the program, the machine code is loaded and executed directly without the translation and interpretation overhead. One of major issues in c-AOTC is relocation because some of the addresses used by the cached machine code are not correct when the machine code is loaded and used in a different run; those addresses should be corrected before they are used. Constant pool resolution and inlining complicate the relocation problem and we propose our solutions. We developed a c-AOTC on Sun's CDC VM reference implementation (RI) and our evaluation results indicate that c-AOTC can improve the performance significantly, as much as an average of 12%. We also experiment with the issue of reducing the number of c-AOTC methods to be cached when the persistent space is tight, with a graceful degradation of performance.