Skip to Main content Skip to Navigation
Conference papers

Preexistence and concrete type analysis in the context of multiple inheritance

Roland Ducournau 1 Julien Pagès 1, * Jean Privat 2, *
* Corresponding author
1 MAREL - Models And Reuse Engineering, Languages
LIRMM - Laboratoire d'Informatique de Robotique et de Microélectronique de Montpellier
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, mu-table. 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.
Complete list of metadata

Cited literature [19 references]  Display  Hide  Download
Contributor : Julien Pagès <>
Submitted on : Monday, September 12, 2016 - 12:40:44 PM
Last modification on : Friday, March 27, 2020 - 3:18:03 PM


Distributed under a Creative Commons Attribution - NonCommercial - NoDerivatives 4.0 International License




Roland Ducournau, Julien Pagès, Jean Privat. Preexistence and concrete type analysis in the context of multiple inheritance. PPPJ: Principles and Practices of Programming on the Java Platform, Aug 2016, Lugano, Switzerland. pp.#10, ⟨10.1145/2972206.2972207⟩. ⟨hal-01362506⟩



Record views