Towards a full multiple-inheritance virtual machine

By: Roland Ducournau, Floréal Morandat


Late binding and subtyping create runtime overhead for object-oriented languages, especially in the context of both multiple inheritance and dynamic loading. Recent experiments show that this overhead is marked with static, non-adaptive compilers, which work under the open-world assumption. Therefore, dynamic, i.e. adaptive, compilation might present a solution to this efficiency issue. This paper presents the abstract architecture of a virtual machine and a dynamic compiler for unrestricted multiple-inheritance. This architecture involves an object representation that allows for shortcuts in the default implementations, coupled with compilation/recompilation protocols that maintain the most efficient implementations compatible with the current state of the program. The object representation proposed is based on perfect class hashing, which shortcuts to static calls or the single-subtyping implementation. Moreover, this article proposes a new methodology, based on random simulation, for evaluating the runtime efficiency and recompilation cost of the proposed protocols. The resulting experiments show that the architecture proposed should provide the same runtime efficiency as Java and .NET, thus offsetting most of the multiple-inheritance overhead.


adaptive compiler, dynamic loading, late binding, method tables, multiple inheritance, open-world assumption, perfect hashing, random simulation, subtype test, virtual machine

Cite as:

Roland Ducournau, Floréal Morandat, “Towards a full multiple-inheritance virtual machine”, Journal of Object Technology, Volume 11, no. 3 (October 2012), pp. 6:1-29, doi:10.5381/jot.2012.11.3.a6.

PDF | DOI | BiBTeX | Tweet this | Post to CiteULike | Share on LinkedIn