skip to main content
10.1145/2816707.2816716acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Language-independent storage strategies for tracing-JIT-based virtual machines

Published: 21 October 2015 Publication History

Abstract

Storage strategies have been proposed as a run-time optimization for the PyPy Python implementation and have shown promising results for optimizing execution speed and memory requirements. However, it remained unclear whether the approach works equally well in other dynamic languages. Furthermore, while PyPy is based on RPython, a language to write VMs with reusable components such as a tracing just-in-time compiler and garbage collection, the strategies design itself was not generalized to be reusable across languages implemented using that same toolchain. In this paper, we present a general design and implementation for storage strategies and show how they can be reused across different RPython-based languages. We evaluate the performance of our implementation for RSqueak, an RPython-based VM for Squeak/Smalltalk and show that storage strategies may indeed offer performance benefits for certain workloads in other dynamic programming languages.We furthermore evaluate the generality of our implementation by applying it to Topaz, a Ruby VM, and Pycket, a Racket implementation.

References

[1]
S. Bauman, C. F. Bolz, R. Hirschfeld, V. Krilichev, T. Pape, J. Siek, and S. Tobin-Hochstadt. Pycket: A tracing JIT for a functional language. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, ICFP ’15, New York, NY, USA, 2015. ACM. ISBN 978-1- 4503-3669-7. to appear.
[2]
C. F. Bolz, A. Cuni, M. Fijłakowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing jit. In Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation, pages 43–52. ACM, 2011.
[3]
C. F. Bolz, L. Diekmann, and L. Tratt. Storage strategies for collections in dynamically typed languages. In Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, pages 167––182. ACM, 2013.
[4]
G. Bracha and W. Cook. Mixin-based inheritance. ACM SIGPLAN Notices, 25(10):303–311, 1990.
[5]
M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 171–183. ACM, 1998.
[6]
B. Goldberg and Y. G. Park. Higher order escape analysis: optimizing stack allocation in functional program implementations. In ESOP’90, pages 152–160. Springer, 1990.
[7]
IEEE. Ieee 754: Standard for binary floating-point arithmetic, Aug. 2014. URL http://grouper.ieee.org/groups/ 754.
[8]
T. Kalibera and R. Jones. Rigorous benchmarking in reasonable time. In ACM SIGPLAN Notices, volume 48(11), pages 63–74. ACM, 2013.
[9]
Oracle. OpenJDK: Graal project, Aug. 2014. URL http: //openjdk.java.net/projects/graal/.
[10]
C. Seaton. Optimising small data structures in jruby +truffle, Aug. 2014. URL http://www.chrisseaton.com/ rubytruffle/small-data-structures/.
[11]
C. Wimmer and T. Würthinger. Tru ffle: a self-optimizing runtime system. In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity, pages 13–14. ACM, 2012.

Cited By

View all
  • (2023)AST vs. Bytecode: Interpreters in the Age of Meta-CompilationProceedings of the ACM on Programming Languages10.1145/36228087:OOPSLA2(318-346)Online publication date: 16-Oct-2023
  • (2020)Toward presizing and pretransitioning strategies for GraalPythonCompanion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397564(41-45)Online publication date: 23-Mar-2020
  • (2016)Efficient and thread-safe objects for dynamically-typed languagesACM SIGPLAN Notices10.1145/3022671.298400151:10(642-659)Online publication date: 19-Oct-2016
  • Show More Cited By

Index Terms

  1. Language-independent storage strategies for tracing-JIT-based virtual machines

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    DLS 2015: Proceedings of the 11th Symposium on Dynamic Languages
    October 2015
    176 pages
    ISBN:9781450336901
    DOI:10.1145/2816707
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 51, Issue 2
      DLS '15
      Feburary 2016
      176 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2936313
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
    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 the author(s) 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

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 21 October 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Implementation
    2. collection types
    3. dynamic typing
    4. memory optimization

    Qualifiers

    • Research-article

    Conference

    SPLASH '15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 32 of 77 submissions, 42%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)4
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 08 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)AST vs. Bytecode: Interpreters in the Age of Meta-CompilationProceedings of the ACM on Programming Languages10.1145/36228087:OOPSLA2(318-346)Online publication date: 16-Oct-2023
    • (2020)Toward presizing and pretransitioning strategies for GraalPythonCompanion Proceedings of the 4th International Conference on Art, Science, and Engineering of Programming10.1145/3397537.3397564(41-45)Online publication date: 23-Mar-2020
    • (2016)Efficient and thread-safe objects for dynamically-typed languagesACM SIGPLAN Notices10.1145/3022671.298400151:10(642-659)Online publication date: 19-Oct-2016
    • (2016)How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare TimeProceedings of the 11th edition of the International Workshop on Smalltalk Technologies10.1145/2991041.2991062(1-10)Online publication date: 23-Aug-2016
    • (2016)Efficient and thread-safe objects for dynamically-typed languagesProceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications10.1145/2983990.2984001(642-659)Online publication date: 19-Oct-2016
    • (2021)Eclipse OMR garbage collection for tracing JIT-based virtual machinesProceedings of the 31st Annual International Conference on Computer Science and Software Engineering10.5555/3507788.3507826(244-249)Online publication date: 22-Nov-2021

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media