Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2972206.2972207acmotherconferencesArticle/Chapter ViewAbstractPublication PagespppjConference Proceedingsconference-collections
research-article

Preexistence and concrete type analysis in the context of multiple inheritance

Published: 29 August 2016 Publication History

Abstract

In the framework of just-in-time compilation, preexistence is a property which asserts that the receiver of a given call site has been instantiated before the current invocation of the considered method [5]. Hence, preexistence is a mean to avoid such low-level repair techniques as on-stack replacement or code patching, when a method must be recompiled during its own activation, because a previous optimization such as devirtualization or inlining has been invalidated by a new class loading. In the original proposition, preexistence considers only values, its analysis is purely intra-procedural, and its result is immutable. In this paper, we reconsider all three aspects: we focus on types instead of values, especially on concrete types, and we accept a limited form of inter-procedural analysis, whose results can be, marginally, mutable. Moreover, while the original proposition considered only method invocation, we place ourselves in the context of full multiple-inheritance, where attribute accesses need to be optimized, too. Overall, we propose a static analysis at runtime, combining concrete types and preexistence. The former allow for more optimizations, while the latter provides the condition for applying these optimizations without any need for repair. We experimented the approach in the prototype of a virtual machine for the Nit language, and the results are really encouraging. In spite of the focus on multiple inheritance, and the experiment setting, this proposal could be applied to most languages with static typing and runtime systems like the Java virtual machine.

References

[1]
M. Arnold, S. Fink, D. Grove, M. Hind, and P. Sweeney. Architecture and policy for adaptive optimization in virtual machines. Technical Report RC23429, IBM T.J. Watson Research Center, 2004.
[2]
M. Arnold and B. Ryder. Thin guards: a simple and effective technique for reducing the penalty of dynamic class loading. In B. Magnusson, editor, Proc. ECOOP'2002, LNCS 2374, pages 498--524. Springer, 2002.
[3]
C. Chambers and D. Ungar. Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented language. In Proc. OOPSLA'89, SIGPLAN Not. 24(10), pages 146--160. ACM, 1989.
[4]
J. Dean, D. Grove, and C. Chambers. Optimization of object-oriented programs using static class hierarchy analysis. In W. Olthoff, editor, Proc. ECOOP'95, LNCS 952, pages 77--101. Springer, 1995.
[5]
D. Detlefs and O. Agesen. Inlining of virtual methods. In R. Guerraoui, editor, Proc. ECOOP'99, LNCS 1628, pages 258--277. Springer, 1999.
[6]
R. Ducournau and F. Morandat. Perfect class hashing and numbering for object-oriented implementation. Softw. Pract. Exper., 41(6):661--694, 2011.
[7]
R. Ducournau and F. Morandat. Towards a full multiple-inheritance virtual machine. Journal of Object Technology, 12:29, 2012.
[8]
R. Ducournau, F. Morandat, and J. Privat. Empirical assessment of object-oriented implementations with multiple inheritance and static typing. In G. T. Leavens, editor, Proc. OOPSLA'09, SIGPLAN Not. 44(10), pages 41--60. ACM, 2009.
[9]
S. J. Fink and F. Qian. Design, implementation and evaluation of adaptive recompilation with on-stack replacement. In Proc. CGO'03, pages 241--252. IEEE Computer Society, 2003.
[10]
U. Hölzle, C. Chambers, and D. Ungar. Debugging optimized code with dynamic deoptimization. In Proc. PLDI '92, pages 32--43. ACM, 1992.
[11]
K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, and T. Nakatani. A study of devirtualization techniques for a Java just-in-time compiler. In Proc. ACM OOPSLA '00, pages 294--310, 2000.
[12]
A. Kennedy and D. Syme. Design and implementation of generics for the .NET Common Language Runtime. In Proc. PLDI'01, SIGPLAN Not. 36(5), pages 1--12. ACM, 2001.
[13]
F. Morandat and R. Ducournau. Empirical assessment of C++-like implementations for multiple inheritance. In Proc. ICOOOLPS Workshop, pages 7--11. ACM, 2010.
[14]
M. Odersky and P. Wadler. Pizza into Java: Translating theory into practice. In Proc. POPL'97, pages 146--159. ACM, 1997.
[15]
J. Privat. Nit language. http://nitlanguage.org/, 2008.
[16]
F. Qian and L. Hendren. A study of type analysis for speculative method inlining in a jit environment. In Proc. of CC'05, pages 255--270. Springer-Verlag, 2005.
[17]
O. Sallenave and R. Ducournau. Lightweight generics in embedded systems through static analysis. In Proc. LCTES'12, pages 11--20. ACM, 2012.
[18]
A. Sewe, J. Jochem, and M. Mezini. Next in line, please! exploiting the indirect benefits of inlining by accurately predicting further inlining. In SPLASH'11 Workshops, pages 317--328, 2011.
[19]
E. Steiner, A. Krall, and C. Thalinger. Adaptive inlining and on-stack replacement in the Cacao virtual machine. In Proc. PPPJ '07, pages 221--226. ACM, 2007.
[20]
V. Ureche, C. Talau, and M. Odersky. Miniboxing: Improving the speed to code size tradeoff in parametric polymorphism translations. In Proc. ACM OOPSLA'13, 2013.
  1. Preexistence and concrete type analysis in the context of multiple inheritance

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    PPPJ '16: Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
    August 2016
    186 pages
    ISBN:9781450341356
    DOI:10.1145/2972206
    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]

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 29 August 2016

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Multiple inheritance
    2. concrete types
    3. devirtualization
    4. inlining
    5. preexistence

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Conference

    PPPJ '16
    PPPJ '16: Virtual Machines, Languages, and Tools
    August 29 - September 2, 2016
    Lugano, Switzerland

    Acceptance Rates

    PPPJ '16 Paper Acceptance Rate 14 of 31 submissions, 45%;
    Overall Acceptance Rate 29 of 58 submissions, 50%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 68
      Total Downloads
    • Downloads (Last 12 months)3
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 27 Nov 2024

    Other Metrics

    Citations

    View Options

    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