|
ABSTRACT
We present a just-in-time compiler for a Java VM that is small enough to fit on resource-constrained devices, yet is surprisingly effective. Our system dynamically identifies traces of frequently executed bytecode instructions (which may span several basic blocks across several methods) and compiles them via Static Single Assignment (SSA) construction. Our novel use of SSA form in this context allows to hoist instructions across trace side-exits without necessitating expensive compensation code in off-trace paths. The overall memory consumption (code and data) of our system is only 150 kBytes, yet benchmarks show a speedup that in some cases rivals heavy-weight just-in-time compilers.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
A. V. Aho, M. Ganapathi, and S. W. K. Tjiang. Code Generation Using Tree Matching and Dynamic Programming. ACM Transactions on Programming Languages and Systems, 11(4):491--516, Oct. 1989.
|
| |
2
|
A. Appel. Concise Specification of Locally Optimal Code Generators. Technical Report CS-TR-080-87, Princeton University, 1987.
|
| |
3
|
V. Bala, E. Duesterwald, and S. Banerjia. Transparent Dynamic Optimization: The Design and Implementation of Dynamo. Technical Report HPL-1999-78, Hewlett Packard Laboratories, June 1999.
|
| |
4
|
J. R. Bell. Threaded code. Communications of the ACM, 16(6):370--372, 1973.
|
| |
5
|
P. P. Chang, S. A. Mahlke, and W.-M. W. Hwu. Using Profile Information to Assist Classic Code Optimizations. Software---Practice and Experience, 21(12):1301--1321, December 1991.
|
| |
6
|
R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transactions on Programming Languages and Systems, 13(4):451--490, October 1991.
|
| |
7
|
M. Debbabi, A. Mourad, and N. Tawbi. Armed E-Bunny: a selective dynamic compiler for embedded java virtual machine targeting ARM processors. In SAC '05: Proceedings of the 2005 ACM symposium on Applied computing, pages 874--878, New York, NY, USA, 2005. ACM Press.
|
| |
8
|
H. Emmelmann, F.-W. Schröer, and L. Landwehr. BEG: A Generator for Efficient Back Ends. In Proceedings of the SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 227--237, 1989.
|
| |
9
|
J. A. Fisher. Trace Scheduling: A Technique for Global Microcode Compaction. IEEE Transactions on Computers, C-30(7):478--490, 1981.
|
| |
10
|
C. W. Fraser, D. R. Hanson, and T. A. Proebsting. Engineering a Simple, Efficient Code-Generator Generator. ACM Letters on Programming Languages and Systems, 1(3):213--226, September 1992.
|
| |
11
|
C. W. Fraser, R. R. Henry, and T. A. Proebsting. BURG: Fast Optimal Instruction Selection And Tree Parsing. ACM SIGPLAN Notices, 27(4):68--76, Apr. 1992.
|
| |
12
|
Free Software Foundation. GNU c compiler, Dec. 2005. http://gcc.gnu.org.
|
| |
13
|
A. Gal. KVM [24] compiled for PowerPC/Linux with GNU C Compiler 3.2, April 2005.
|
| |
14
|
A. Gal. Measured on a Sharp Zaurus PDA, 206 MHz SA-1110, 64MB RAM, using a modified subset of SpecJVM98, July 2005.
|
| |
15
|
CLDC HotSpot Implementation Virtual Machine, available at http://java.sun.com/j2me/docs/pdf/CLDC-HI_whitepaper-February_2005.pdf, Feb. 2005.
|
| |
16
|
Insignia Solutions. Jeode Platform: Java for Resource-constrained Devices, White Paper, 2002.
|
| |
17
|
R. Lougher. JamVM Virtual Machine. http://jamvm.sf.net/, Nov. 2005.
|
| |
18
|
J. A. Mathew, P. D. Coddington, and K. A. Hawick. Analysis and Development of Java Grande Benchmarks. In Proceedings of the ACM 1999 Java Grande Conference, San Francisco, 1999.
|
| |
19
|
R. Pozo and B. Miller. SciMark2 http://math.nist.gov/scimark2, Mar. 2004.
|
| |
20
|
K. Schmid. Jbed Micro Edition CLDC and Jbed Profile for MID. Technical report, Esmertec AG, Dubendorf, Switzerland, 2002.
|
| |
21
|
N. Shaylor. A Just-in-Time Compiler for Memory-Constrained Low-Power Devices. In Proceedings of the 2nd Java and Virtual Machine Research and Technology Symposium, pages 119--126, Berkeley, CA, USA, 2002. USENIX Association.
|
| |
22
|
L. Stepanian, A. D. Brown, A. Kielstra, G. Koblents, and K. Stoodley. Inlining java native calls at runtime. In VEE '05: Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments, pages 121--131, New York, NY, USA, 2005. ACM Press.
|
| |
23
|
SUN J2ME's Homepage. http://java.sun.com/j2me.
|
| |
24
|
Sun Microsystems. J2ME Building Blocks for Mobile Devices, White Paper on KVM and the Connected, Limited Device Configuration http://java.sun.com/products/cldc/wp/KVMwp.pdf, May 2000.
|
CITED BY 8
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mason Chang , Edwin Smith , Rick Reitmaier , Michael Bebenita , Andreas Gal , Christian Wimmer , Brendan Eich , Michael Franz, Tracing for web 3.0: trace compilation for the next generation web applications, Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, March 11-13, 2009, Washington, DC, USA
|
|
|
Andreas Gal , Brendan Eich , Mike Shaver , David Anderson , David Mandelin , Mohammad R. Haghighat , Blake Kaplan , Graydon Hoare , Boris Zbarsky , Jason Orendorff , Jesse Ruderman , Edwin W. Smith , Rick Reitmaier , Michael Bebenita , Mason Chang , Michael Franz, Trace-based just-in-time type specialization for dynamic languages, ACM SIGPLAN Notices, v.44 n.6, June 2009
|
|
|
Antonio Cuni , Davide Ancona , Armin Rigo, Faster than C#: efficient implementation of dynamic languages on .NET, Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, p.26-33, July 06-06, 2009, Genova, Italy
|
|
|
Carl Friedrich Bolz , Antonio Cuni , Maciej Fijalkowski , Armin Rigo, Tracing the meta-level: PyPy's tracing JIT compiler, Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, p.18-25, July 06-06, 2009, Genova, Italy
|
|