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 2016Publication 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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Detlefs and O. Agesen. Inlining of virtual methods. In R. Guerraoui, editor, Proc. ECOOP'99, LNCS 1628, pages 258--277. Springer, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. R. Ducournau and F. Morandat. Perfect class hashing and numbering for object-oriented implementation. Softw. Pract. Exper., 41(6):661--694, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. R. Ducournau and F. Morandat. Towards a full multiple-inheritance virtual machine. Journal of Object Technology, 12:29, 2012.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. U. Hölzle, C. Chambers, and D. Ungar. Debugging optimized code with dynamic deoptimization. In Proc. PLDI '92, pages 32--43. ACM, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. F. Morandat and R. Ducournau. Empirical assessment of C++-like implementations for multiple inheritance. In Proc. ICOOOLPS Workshop, pages 7--11. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Odersky and P. Wadler. Pizza into Java: Translating theory into practice. In Proc. POPL'97, pages 146--159. ACM, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. Privat. Nit language. http://nitlanguage.org/, 2008.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. O. Sallenave and R. Ducournau. Lightweight generics in embedded systems through static analysis. In Proc. LCTES'12, pages 11--20. ACM, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  1. Preexistence and concrete type analysis in the context of multiple inheritance

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • 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

      Copyright © 2016 ACM

      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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 29 August 2016

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Research
      • Refereed limited

      Acceptance Rates

      PPPJ '16 Paper Acceptance Rate14of31submissions,45%Overall Acceptance Rate29of58submissions,50%
    • Article Metrics

      • Downloads (Last 12 months)4
      • Downloads (Last 6 weeks)1

      Other Metrics

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader