skip to main content
10.1145/1254766.1254776acmconferencesArticle/Chapter ViewAbstractPublication PagescpsweekConference Proceedingsconference-collections
Article

Java client ahead-of-time compiler for embedded systems

Published:13 June 2007Publication History

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.

References

  1. Sun Microsystems, CDC: An Application Framework for Personal Mobile Devices, White Paper, Sun Microsystems.Google ScholarGoogle Scholar
  2. J. Gosling, B. Joy, and G. Steele, The Java Language Specification, Addison-Wesley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Aycock. A Brief History of Just-in-Time, ACM Computing Surveys, 35(2), Jun 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. Krall, Efficient JavaVM Just-in-Time Compilation, Proceedings of 1998 International Conference on Parallel Architectures and Compilation Techniques, 1998 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle Scholar
  11. Sun Microsystems, Java ME Connected Device Configuration (CDC), http://java.sun.com/products/cdc.Google ScholarGoogle Scholar
  12. Sun Microsystems, Porting Guide Connected Device Configuration and Foundation Profile version 1.0.1 Java 2 Platform Micro Edition, May 2002.Google ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. M. Sandya, Jazzing up JVMs with Off-line Profile Data: Does It Pay?, ACM SIGPLAN Notices, 39(8), 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Interactive TV Web, http://www.interactivetvweb.org.Google ScholarGoogle Scholar
  17. Standard Performance Evaluation Corporation, SPECjvm98 at http://www.spec.org.Google ScholarGoogle Scholar
  18. The Embedded Microprocessor Benchmark Consortium, http://eembc.orgGoogle ScholarGoogle Scholar
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. Arnold, A. Welc, V. T. Rajan, Improving virtual machine performance using a cross-run profile repository, ACM SIGPLAN Notices, 40(10), 2005 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Wireless internet platform for interoperability (WIPI), http://www.wipi.or.krGoogle ScholarGoogle Scholar
  22. R. Wilkes, NGen Revs Up Your Performance with Powerful New Features, http://msdn.microsoft.com/msdnmag/issues/05/04/NGen/Google ScholarGoogle Scholar
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Java client ahead-of-time compiler for embedded systems

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        LCTES '07: Proceedings of the 2007 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
        June 2007
        258 pages
        ISBN:9781595936325
        DOI:10.1145/1254766
        • cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 42, Issue 7
          Proceedings of the 2007 LCTES conference
          July 2007
          241 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1273444
          Issue’s Table of Contents

        Copyright © 2007 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 13 June 2007

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate116of438submissions,26%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!