Java bytecode to native code translation: the caffeine prototype and preliminary results
Proceedings of the 29th annual ACM/IEEE international symposium on Microarchitecture
Optimizing direct threaded code by selective inlining
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Using caching to solve larger probabilistic planning problems
AAAI '98/IAAI '98 Proceedings of the fifteenth national/tenth conference on Artificial intelligence/Innovative applications of artificial intelligence
Java annotation-aware just-in-time (AJIT) complilation system
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
A small hybrid JIT for embedded systems
ACM SIGPLAN Notices
Practicing JUDO: Java under dynamic optimizations
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Java Runtime Systems: Characterization and Architectural Implications
IEEE Transactions on Computers
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Language Specification
The Java Language Specification
A Just-in-Time Compiler for Memory-Constrained Low-Power Devices
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
LaTTe: A Java VM Just-in-Time Compiler with Fast and Efficient Register Allocation
PACT '99 Proceedings of the 1999 International Conference on Parallel Architectures and Compilation Techniques
Overview of the IBM Java just-in-time compiler
IBM Systems Journal
IBM Systems Journal
A dynamic compiler for embedded Java virtual machines
Proceedings of the 3rd international symposium on Principles and practice of programming in Java
The java hotspotTM server compiler
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Effective inline-threaded interpretation of Java bytecode using preparation sequences
CC'03 Proceedings of the 12th international conference on Compiler construction
Hi-index | 0.00 |
This paper presents a new selective dynamic compilation technique targeting ARM 16/32-bit embedded system processors. This compiler is built inside the J2ME/CLDC (Java 2 Micro Edition for Connected Limited Device Configuration) platform [Sun MicroSystems, Java 2 Platform, Micro Edition, Version 1.0 Connected, Limited Device Configuration, Specification, Technical Report, Sun Microsystems, CA, USA, May 2000]. The primary objective of this work is to elaborate an efficient, lightweight and low-footprint accelerated Java virtual machine ready to be executed on embedded machines. This is achieved by implementing a selective ARM dynamic compiler called Armed E-Bunny into Sun's Kilobyte Virtual Machine (KVM) [Sun MicroSystems, KVM porting guide, Technical Report, Sun MicroSystems, CA, USA, September 2001]. In this paper we present the motivations, the architecture, the design and the implementation of Armed E-Bunny. The modified KVM is ported on a handheld PDA that is powered with embedded Linux and is tested using standard J2ME benchmarks. The experimental results demonstrate that a speed-up of 360% over the last version of Sun's KVM is accomplished with a footprint that does not exceed 119 KB. An important result of this paper is also the proposition of an acceleration technique that leverages Armed E-Bunny by establishing a synergy between efficient interpretation and selective dynamic compilation. The main traits of this technique are: a one-pass compilation by code reuse, an efficient threaded interpretation and a fast switching mechanism between the interpreted and compiled modes.