Abstract
Inline-threaded interpretation is a recent technique that improves performance by eliminating dispatch overhead within basic blocks for interpreters written in C [11]. The dynamic class loading, lazy class initialization, and multi-threading features of Java reduce the effiectiveness of a straight-forward implementation of this technique within Java interpreters. In this paper, we introduce preparation sequences, a new technique that solves the particular challenge of effiectively inline-threading Java. We have implemented our technique in the SableVM Java virtual machine, and our experimental results show that using our technique, inline-threaded interpretation of Java, on a set of benchmarks, achieves a speedup ranging from 1.20 to 2.41 over switch-based interpretation, and a speedup ranging from 1.15 to 2.14 over direct-threaded interpretation.
This research was partly supported by NSERC, FCAR and Hydro-Québec. G. Hedin (Ed.): CC 2003, LNCS 2622, pp., 2003.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: principles, techniques, and tools. Addison-Wesley Longman Publishing Co., Inc., 1986.
J. Auslander, M. Philipose, C. Chambers, S. J. Eggers, and B. N. Bershad. Fast, effective dynamic compilation. In Proceedings of the ACM SIGPLAN’ 96 conference on Programming language design and implementation, pages 149–159. ACM Press, 1996.
M. Cierniak, G.-Y. Lueh, and J. N. Stichnoth. Practicing JUDO: Java under dynamic optimizations. In Proceedings of the ACM SIGPLAN’ 00 Conference on Programming Language Design and Implementation, pages 13–26, Vancouver, British Columbia, June 2000. ACM Press.
D. R. Engler. Vcode: a retargetable, extensible, very fast dynamic code generation system. In Proceedings of the ACM SIGPLAN’ 96 conference on Programming language design and implementation, pages 160–170. ACM Press, 1996.
A. M. Ertl. A portable Forth engine. http://www.complang.tuwien.ac.at/forth/threaded-code.html.
E. M. Gagnon and L. J. Hendren. SableVM:A Research Framework for the E.cient Execution of Java Bytecode. In Proceedings of the Java Virtual Machine Research and Technology Symposium (JVM-01), pages 27–40. USENIX Association, Apr. 2001.
J. L. Hennessy and D. A. Patterson. Computer architecture (2nd ed.): a quantitative approach. Morgan Kaufmann Publishers Inc., 1996.
K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, and T. Nakatani. A study of devirtualization techniques for a Java Just-In-Time compiler. In Proceedings of the ACM SIGPLAN’ 00 conference on Object-oriented programming, systems, languages, and applications, pages 294–310. ACM Press, 2000.
T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, second edition, 1999.
F. Noel, L. Hornof, C. Consel, and J. L. Lawall. Automatic, template-based runtime specialization: Implementation and experimental study. In Proceedings of the IEEE Computer Society International Conference on Computer Languages 1998, pages 132–142. IEEE Computer Society Press, Apr. 1998.
I. Piumarta and F. Riccardi. Optimizing direct threaded code by selective inlining. In Proceedings of the ACM SIGPLAN’ 98 Conference on Programming Language Design and Implementation, pages 291–300. ACM Press, June 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gagnon, E., Hendren, L. (2003). Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences. In: Hedin, G. (eds) Compiler Construction. CC 2003. Lecture Notes in Computer Science, vol 2622. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36579-6_13
Download citation
DOI: https://doi.org/10.1007/3-540-36579-6_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-00904-7
Online ISBN: 978-3-540-36579-2
eBook Packages: Springer Book Archive