[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2647508.2647517acmconferencesArticle/Chapter ViewAbstractPublication PagespppjConference Proceedingsconference-collections
research-article

An object storage model for the truffle language implementation framework

Published: 23 September 2014 Publication History

Abstract

Truffle is a Java-based framework for developing high-performance language runtimes. Language implementers aiming at developing new runtimes have to design all the runtime mechanisms for managing dynamically typed objects from scratch. This not only leads to potential code duplication, but also impacts the actual time needed to develop a fully-fledged runtime.
In this paper we address this issue by introducing a common object storage model (OSM) for Truffle that can be used by language implementers to develop new runtimes. The OSM is generic, language-agnostic, and portable, as it can be used to implement a great variety of dynamic languages. It is extensible, featuring built-in support for custom extension mechanisms. It is also high-performance, as it is designed to benefit from the optimizing compiler in the Truffle framework. Our initial evaluation indicates that the Truffle OSM can be used to implement high-performance language runtimes, with no performance overhead when compared to language-specific solutions.

References

[1]
J. Castanos, D. Edelsohn, K. Ishizaki, P. Nagpurkar, T. Nakatani, T. Ogasawara, and P. Wu. On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, pages 195--212, 2012.
[2]
C. Chambers, D. Ungar, and E. Lee. An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 49--70. ACM Press, 1989.
[3]
D. Chisnall. Smalltalk in a C world. In Proceedings of the International Workshop on Smalltalk Technologies, pages 4:1--4:12, 2012.
[4]
D. Chisnall. The challenge of cross-language interoperability. Queue, 11(10):20:20--20:28, Oct. 2013.
[5]
G. Duboscq, T. Würthinger, L. Stadler, C. Wimmer, D. Simon, and H. Mössenböck. An intermediate representation for speculative optimizations in a dynamic compiler. 2013.
[6]
ECMA International. Standard ECMA-262 - ECMAScript Language Specification. 5.1 edition, June 2011.
[7]
N. Geoffray, G. Thomas, J. Lawall, G. Muller, and B. Folliot. VMKit: A substrate for managed runtime environments. In Proceedings of the International Conference on Virtual Execution Environments, pages 51--62, 2010.
[8]
Google. Octane benchmark suite, 2014. URL https://developers.google.com/octane/.
[9]
Google. V8 JavaScript engine, 2014. URL http://code.google.com/p/v8/.
[10]
J. Gosling, B. Joy, G. Steele, and G. Bracha. Java Language Specification, Third Edition. Addison-Wesley Professional, 2005.
[11]
M. Grimmer, T. Würthinger, A. Wöß, and H. Mössenböck. An efficient approach for accessing C data structures from JavaScript. In Proceedings of the Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems. ACM Press, 2014.
[12]
U. Hölzle, C. Chambers, and D. Ungar. Optimizing dynamically-typed object-oriented languages with polymorphic inline caches. In Proceedings of the European Conference on Object-Oriented Programming, pages 21--38. Springer-Verlag, 1991.
[13]
U. Hölzle, C. Chambers, and D. Ungar. Debugging optimized code with dynamic deoptimization. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 32--43. ACM Press, 1992.
[14]
K. Ishizaki, T. Ogasawara, J. Castanos, P. Nagpurkar, D. Edelsohn, and T. Nakatani. Adding dynamically-typed language support to a statically-typed language compiler: Performance evaluation, analysis, and tradeoffs. In Proceedings of the International Conference on Virtual Execution Environments, pages 169--180, 2012.
[15]
J. Manson, W. Pugh, and S. V. Adve. The Java memory model. In Proceedings of the ACM SIGPLAN Symposium on Principles of Programming Languages, pages 378--391, 2005.
[16]
E. Meijer and J. Gough. Technical Overview of the Common Language Runtime. Technical report, 2000.
[17]
Mozilla Foundation. Spidermonkey JavaScript engine, 2014. URL http://developer.mozilla.org/en/SpiderMonkey.
[18]
OpenJDK Community. Graal project, 2014. URL http://openjdk.java.net/projects/graal/.
[19]
OpenJDK Community. Nashorn project, 2014. URL http://openjdk.java.net/projects/nashorn/.
[20]
G. Richards, S. Lebresne, B. Burg, and J. Vitek. An analysis of the dynamic behavior of JavaScript programs. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1--12. ACM Press, 2010.
[21]
L. Stadler, T. Würthinger, and H. Mössenböck. Partial escape analysis and scalar replacement for Java. In Proceedings of the International Symposium on Code Generation and Optimization, pages 165--174. ACM Press, 2014.
[22]
D. Ungar and R. B. Smith. Self: The power of simplicity. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 227--242, 1987.
[23]
T. Van Cutsem and M. S. Miller. Proxies: Design principles for robust object-oriented intercession APIs. In Proceedings of the Dynamic Languages Symposium, pages 59--72, 2010.
[24]
T. Würthinger, A. Wöß, L. Stadler, G. Duboscq, D. Simon, and C. Wimmer. Self-optimizing AST interpreters. In Proceedings of the Dynamic Languages Symposium, 2012.
[25]
T. W ürthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One VM to rule them all. In Proceedings of Onward!, 2013.

Cited By

View all
  • (2025)Honey Potion: An eBPF Backend for ElixirProceedings of the 23rd ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3696443.3708923(660-674)Online publication date: 1-Mar-2025
  • (2024)Feasibility of Test-Driven Development in Agile Blockchain Smart Contract Development: A Comprehensive Analysis2024 First International Conference on Technological Innovations and Advance Computing (TIACOMP)10.1109/TIACOMP64125.2024.00052(264-277)Online publication date: 29-Jun-2024
  • (2023)TASTyTruffle: Just-in-Time Specialization of Parametric PolymorphismProceedings of the ACM on Programming Languages10.1145/36228537:OOPSLA2(1561-1588)Online publication date: 16-Oct-2023
  • Show More Cited By

Index Terms

  1. An object storage model for the truffle language implementation framework

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    PPPJ '14: Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools
    September 2014
    214 pages
    ISBN:9781450329262
    DOI:10.1145/2647508
    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

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 23 September 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Java
    2. JavaScript
    3. Ruby
    4. Truffle
    5. dynamic languages
    6. language implementation
    7. optimization
    8. virtual machine

    Qualifiers

    • Research-article

    Conference

    PPPJ '14
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 29 of 58 submissions, 50%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)59
    • Downloads (Last 6 weeks)9
    Reflects downloads up to 09 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2025)Honey Potion: An eBPF Backend for ElixirProceedings of the 23rd ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3696443.3708923(660-674)Online publication date: 1-Mar-2025
    • (2024)Feasibility of Test-Driven Development in Agile Blockchain Smart Contract Development: A Comprehensive Analysis2024 First International Conference on Technological Innovations and Advance Computing (TIACOMP)10.1109/TIACOMP64125.2024.00052(264-277)Online publication date: 29-Jun-2024
    • (2023)TASTyTruffle: Just-in-Time Specialization of Parametric PolymorphismProceedings of the ACM on Programming Languages10.1145/36228537:OOPSLA2(1561-1588)Online publication date: 16-Oct-2023
    • (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
    • (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)Generating Java Interfaces for Accessing Foreign Objects in GraalVM (Work in Progress)Proceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622981(173-178)Online publication date: 19-Oct-2023
    • (2022)An Approach to Collecting Object Graphs for Data-structure Live Programming Based on a Language Implementation FrameworkJournal of Information Processing10.2197/ipsjjip.30.45130(451-463)Online publication date: 2022
    • (2022)Profile Guided Offline Optimization of Hidden Class Graphs for JavaScript VMs in Embedded SystemsProceedings of the 14th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3563838.3567678(25-35)Online publication date: 29-Nov-2022
    • (2022)Automatic Array Transformation to Columnar Storage at Run TimeProceedings of the 19th International Conference on Managed Programming Languages and Runtimes10.1145/3546918.3546919(16-28)Online publication date: 14-Sep-2022
    • (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
    • Show More Cited By

    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