ABSTRACT
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.
- Sun Microsystems, CDC: An Application Framework for Personal Mobile Devices, White Paper, Sun Microsystems.Google Scholar
- J. Gosling, B. Joy, and G. Steele, The Java Language Specification, Addison-Wesley, 1996. Google Scholar
Digital Library
- J. Aycock. A Brief History of Just-in-Time, ACM Computing Surveys, 35(2), Jun 2003. Google Scholar
Digital Library
- A. Krall, Efficient JavaVM Just-in-Time Compilation, Proceedings of 1998 International Conference on Parallel Architectures and Compilation Techniques, 1998 Google Scholar
Digital Library
- A. Adl-Tabatabai, M. Cierniak, G.-Y. Lueh, V. Parikh, J. Stichnoth, Fast, Effective Code Generation in a Just-in-Time Java Compiler, Proceedings of ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, 1998. Google Scholar
Digital Library
- T. A. Proebsting, G. Townsend, P. Bridges, J. H. Hartman, T. Newsham, S. A. Watterson, Toba: Java for Applications A Way Ahead of Time (WAT) Compiler, Proceedings of the 3rd USENIX Conference on Object-Oriented Technologies and Systems, 1997. Google Scholar
Digital Library
- G. Muller, B. Moura, F. Bellard, C. Consel, Harissa: a Flexible and Efficient Java Environment Mixing Bytecode and Compiled Code, Proceedings of the 3rd USENIX Conference on Object-Oriented Technologies and Systems, 1997. Google Scholar
Digital Library
- M. Weiss, F. de Ferrière, B. Delsart, C. Fabre, F. Hirsch, E. A. Johnson, V. Joloboff, F. Roy, F. Siebert, X. Spengler, TurboJ, a Java Bytecode-to-Native Compiler, Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES '98), 1998. Google Scholar
Digital Library
- M. Arnold, S. Fink, D. Grove, M. Hind, P. Sweeney, Adaptive Optimization in the Jalapeno JVM, Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '00), 2000. Google Scholar
Digital Library
- L. Bak, J. R. Andersen, K. V. Lund, Non-intrusive Gathering of Code Usage Information to Facilitate Removing Unused Compiled Code, US Patent, 6738969.Google Scholar
- Sun Microsystems, Java ME Connected Device Configuration (CDC), http://java.sun.com/products/cdc.Google Scholar
- Sun Microsystems, Porting Guide Connected Device Configuration and Foundation Profile version 1.0.1 Java 2 Platform Micro Edition, May 2002.Google Scholar
- M. Serrano, R. Bordawekar, S. Midkiff, M. Gupta, Quicksilver: A Quasi-Static Compiler for Java, Proceedings of ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '00), 2000. Google Scholar
Digital Library
- C. Krintz, Coupling On-Line and Off-Line Profile Information to Improve Program Performance. Proceedings of International Symposium on Code Generation and Optimization (CGO '03), 2003. Google Scholar
Digital Library
- S. M. Sandya, Jazzing up JVMs with Off-line Profile Data: Does It Pay?, ACM SIGPLAN Notices, 39(8), 2004. Google Scholar
Digital Library
- Interactive TV Web, http://www.interactivetvweb.org.Google Scholar
- Standard Performance Evaluation Corporation, SPECjvm98 at http://www.spec.org.Google Scholar
- The Embedded Microprocessor Benchmark Consortium, http://eembc.orgGoogle Scholar
- P. Joisha, S. Midkiff, M. Serrano, M. Gupta, A framework for efficient reuse of binary code in Java, Proceedings of the 15th international conference on Supercomputing, 2001. Google Scholar
Digital Library
- M. Arnold, A. Welc, V. T. Rajan, Improving virtual machine performance using a cross-run profile repository, ACM SIGPLAN Notices, 40(10), 2005 Google Scholar
Digital Library
- Wireless internet platform for interoperability (WIPI), http://www.wipi.or.krGoogle Scholar
- R. Wilkes, NGen Revs Up Your Performance with Powerful New Features, http://msdn.microsoft.com/msdnmag/issues/05/04/NGen/Google Scholar
- L. Zhang, C. Krintz, "Adaptive code unloading for resource-constrained JVMs" ACM SIGPLAN Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES '04), 2004 Google Scholar
Digital Library
Index Terms
Java client ahead-of-time compiler for embedded systems
Recommendations
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 systemsThe execution environment of Android system is based on a virtual machine called Dalvik virtual machine (DVM) in which the execution of an application program is in interpret-mode. To reduce the interpretation overhead of DVM, Google has included a ...
Java client ahead-of-time compiler for embedded systems
Proceedings of the 2007 LCTES conferenceThe 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-...
Client ahead-of-time compiler for embedded Java platforms
Many embedded Java platforms execute two types of Java classes: those installed statically on the client device and those downloaded dynamically from service providers at run time. For achieving higher performance, the static Java classes can be compiled ...







Comments