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.
%0 Conference Paper
%1 Gal:2006:HotpathVM
%A Gal, Andreas
%A Probst, Christian W.
%A Franz, Michael
%B Proceedings of the 2nd International Conference on Virtual Execution Environments
%D 2006
%I ACM
%K Compilation Me:MastersThesis Trace VM
%P 144--153
%R 10.1145/1134760.1134780
%T HotpathVM: An Effective JIT Compiler for
Resource-constrained Devices
%X 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.
%@ 1-59593-332-6
@inproceedings{Gal:2006:HotpathVM,
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.},
added-at = {2008-07-14T22:24:33.000+0200},
author = {Gal, Andreas and Probst, Christian W. and Franz, Michael},
biburl = {https://www.bibsonomy.org/bibtex/26f69c7a6f36eccd257094e758756e117/gron},
booktitle = {Proceedings of the 2nd International Conference on Virtual Execution Environments},
description = {HotpathVM},
doi = {10.1145/1134760.1134780},
interhash = {a2dead5b3b3d838be8c0c3cd6b6bbf30},
intrahash = {6f69c7a6f36eccd257094e758756e117},
isbn = {1-59593-332-6},
keywords = {Compilation Me:MastersThesis Trace VM},
location = {Ottawa, Ontario, Canada},
pages = {144--153},
publisher = {ACM},
series = {VEE'06},
timestamp = {2023-04-08T20:08:07.000+0200},
title = {HotpathVM: An Effective JIT Compiler for
Resource-constrained Devices},
year = 2006
}