skip to main content
10.1145/2069172.2069181acmotherconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Runtime feedback in a meta-tracing JIT for efficient dynamic languages

Published: 26 July 2011 Publication History

Abstract

Meta-tracing JIT compilers can be applied to a variety of different languages without explicitly encoding language semantics into the compiler. So far, they lacked a way to give the language implementor control over runtime feedback. This restricted their performance. In this paper we describe the mechanisms in PyPy's meta-tracing JIT that can be used to control runtime feedback in language-specific ways. These mechanisms are flexible enough to express classical VM techniques such as maps and runtime type feedback.

References

[1]
D. Ancona, M. Ancona, A. Cuni, and N. D. Matsakis. RPython: a step towards reconciling dynamically and statically typed OO languages. In DLS, Montreal, Quebec, Canada, 2007. ACM.
[2]
V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: a transparent dynamic optimization system. ACM SIGPLAN Notices, 35(5):1--12, 2000.
[3]
M. Bebenita, F. Brandner, M. Fahndrich, F. Logozzo, W. Schulte, N. Tillmann, and H. Venter. SPUR: a trace-based JIT compiler for CIL. In OOPSLA, Reno/Tahoe, Nevada, USA, 2010. ACM.
[4]
C. F. Bolz, A. Cuni, M. Fijałkowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing JIT. In PEPM, PEPM '11, 2011.
[5]
C. F. Bolz, A. Cuni, M. Fijałkowski, and A. Rigo. Tracing the metalevel: PyPy's tracing JIT compiler. In ICOOOLPS, pages 18--25, Genova, Italy, 2009. ACM.
[6]
C. F. Bolz, M. Leuschel, and D. Schneider. Towards a jitting VM for prolog execution. In PPDP, Hagenberg, Austria, 2010. ACM.
[7]
C. Chambers, D. Ungar, and E. Lee. An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes. In OOPSLA, volume 24, 1989.
[8]
L. P. Deutsch and A. M. Schiffman. Efficient implementation of the smalltalk-80 system. In POPL, Salt Lake City, Utah, 1984. ACM.
[9]
Y. Futamura. Partial evaluation of computation process - an approach to a Compiler-Compiler. Higher-Order and Symbolic Computation, 12(4):381--391, 1999.
[10]
A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and M. Franz. Trace-based just-in-time type specialization for dynamic languages. In PLDI, PLDI '09, New York, New York, 2009. ACM. ACM ID: 1542528.
[11]
A. Gal and M. Franz. Incremental dynamic code generation with trace trees. Technical Report ICS-TR-06-16, Donald Bren School of Information and Computer Science, University of California, Irvine, Nov. 2006.
[12]
A. Gal, C. W. Probst, and M. Franz. HotpathVM: an effective JIT compiler for resource-constrained devices. In VEE, Ottawa, Ontario, Canada, 2006. ACM.
[13]
A. Georges, D. Buytaert, and L. Eeckhout. Statistically rigorous java performance evaluation. SIGPLAN Notices, 42(10):57--76, 2007.
[14]
B. Grant, M. Mock, M. Philipose, C. Chambers, and S. J. Eggers. DyC: an expressive annotation-directed dynamic compiler for c. Theoretical Computer Science, 248:147--199, Oct. 2000. ACM ID: 357493.
[15]
U. Hölzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In PLDI, pages 326--336, Orlando, Florida, United States, 1994. ACM.
[16]
N. D. Jones, C. K. Gomard, and P. Sestoft. Partial evaluation and automatic program generation. Prentice-Hall, 1993.
[17]
A. Rigo. Representation-based just-in-time specialization and the psyco prototype for python. In PEPM, Verona, Italy, 2004. ACM.
[18]
A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In DLS, Portland, Oregon, USA, 2006. ACM.
[19]
J. R. Rose. Bytecodes meet combinators: invokedynamic on the JVM. Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages, 2009.
[20]
G. T. Sullivan, D. L. Bruening, I. Baron, T. Garnett, and S. Amarasinghe. Dynamic native optimization of interpreters. In Workshop on Interpreters, virtual machines and emulators, San Diego, California, 2003. ACM.
[21]
M. Wolczko, O. Agesen, and D. Ungar. Towards a universal implementation substrate for Object-Oriented languages. In OOPSLA workshop on Simplicity, Performance, and Portability in Virtual Machine Design, 1999.
[22]
A. Yermolovich, C. Wimmer, and M. Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In DLS, pages 79--88, Orlando, Florida, USA, 2009. ACM.

Cited By

View all
  • (2024)Type-Based Gradual Typing Performance OptimizationProceedings of the ACM on Programming Languages10.1145/36329318:POPL(2667-2699)Online publication date: 5-Jan-2024
  • (2023)Evaluating YJIT’s Performance in a Production Context: A Pragmatic ApproachProceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622982(20-33)Online publication date: 19-Oct-2023
  • (2023)CacheIR: The Benefits of a Structured Representation for Inline CachesProceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622979(34-46)Online publication date: 19-Oct-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
ICOOOLPS '11: Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
July 2011
64 pages
ISBN:9781450308946
DOI:10.1145/2069172
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

  • Lancaster University: Lancaster University
  • AITO: Assoc Internationale por les Technologies Objects

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 July 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. code generation
  2. interpreter
  3. meta-programming
  4. runtime feedback
  5. tracing JIT

Qualifiers

  • Research-article

Funding Sources

Conference

ECOOP '11
Sponsor:
  • Lancaster University
  • AITO

Acceptance Rates

Overall Acceptance Rate 11 of 14 submissions, 79%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)17
  • Downloads (Last 6 weeks)1
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Type-Based Gradual Typing Performance OptimizationProceedings of the ACM on Programming Languages10.1145/36329318:POPL(2667-2699)Online publication date: 5-Jan-2024
  • (2023)Evaluating YJIT’s Performance in a Production Context: A Pragmatic ApproachProceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622982(20-33)Online publication date: 19-Oct-2023
  • (2023)CacheIR: The Benefits of a Structured Representation for Inline CachesProceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622979(34-46)Online publication date: 19-Oct-2023
  • (2021)YJIT: a basic block versioning JIT compiler for CRubyProceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3486606.3486781(25-32)Online publication date: 19-Oct-2021
  • (2020)Amalgamating different JIT compilations in a meta-tracing JIT compiler frameworkProceedings of the 16th ACM SIGPLAN International Symposium on Dynamic Languages10.1145/3426422.3426977(1-15)Online publication date: 17-Nov-2020
  • (2020)Type freezing: exploiting attribute type monomorphism in tracing JIT compilersProceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3368826.3377907(16-29)Online publication date: 22-Feb-2020
  • (2019)Efficient late binding of dynamic function compositionsProceedings of the 12th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3357766.3359543(141-151)Online publication date: 20-Oct-2019
  • (2019)BacCamlCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328466(1-3)Online publication date: 1-Apr-2019
  • (2019)Extending a meta-tracing compiler to mix method and tracing compilationCompanion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming10.1145/3328433.3328439(1-3)Online publication date: 1-Apr-2019
  • (2017)Practical partial evaluation for high-performance dynamic language runtimesACM SIGPLAN Notices10.1145/3140587.306238152:6(662-676)Online publication date: 14-Jun-2017
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media