Preexistence and concrete type analysis in the context of multiple inheritance

Roland Ducournau 1 Julien Pagès 1, * Jean Privat 2, *
* Auteur correspondant
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.
Type de document :
Communication dans un congrès
PPPJ: Principles and Practices of Programming on the Java Platform, Aug 2016, Lugano, Switzerland. 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools 2016, 〈http://pppj16.inf.usi.ch/〉. 〈10.1145/2972206.2972207〉
Liste complète des métadonnées

Littérature citée [19 références]  Voir  Masquer  Télécharger

https://hal.archives-ouvertes.fr/hal-01362506
Contributeur : Julien Pagès <>
Soumis le : lundi 12 septembre 2016 - 12:40:44
Dernière modification le : jeudi 24 mai 2018 - 15:59:22

Licence


Distributed under a Creative Commons Paternité - Pas d'utilisation commerciale - Pas de modification 4.0 International License

Identifiants

Collections

Citation

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. 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools 2016, 〈http://pppj16.inf.usi.ch/〉. 〈10.1145/2972206.2972207〉. 〈hal-01362506〉

Partager

Métriques

Consultations de la notice

108