Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
A fast method dispatcher for compiled languages with multiple inheritance
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The annotated C++ reference manual
The annotated C++ reference manual
Two-directional record layout for multiple inheritance
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
Type-extension type test can be performed in constant time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modula-3
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Eiffel: the language
Object-oriented programming in Oberon-2
Object-oriented programming in Oberon-2
Space efficient conservative garbage collection
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Selective specialization for object-oriented languages
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Bidirectional object layout for separate compilation
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Inside the C++ object model
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Theoretical Computer Science
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient type inclusion tests
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Time and space efficient method-lookup for object-oriented programs
Proceedings of the seventh annual ACM-SIAM symposium on Discrete algorithms
Space and time-efficient memory layout for multiple inheritance
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Class hierarchy specialization
Acta Informatica
Perfect hashing functions: a single probe retrieving method for static sets
Communications of the ACM
Design and implementation of generics for the .NET Common language runtime
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Efficient implementation of Java interfaces: Invokeinterface considered harmless
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient Polymorphic Calls
Computers and Intractability: A Guide to the Theory of NP-Completeness
Computers and Intractability: A Guide to the Theory of NP-Completeness
Fast subtype checking in the HotSpot JVM
JGI '02 Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande
Type Inference for Late Binding: The SmallEiffel Compiler
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Quantifying and evaluating the space overhead for alternative C++ memory layouts
Software—Practice & Experience
Link-time static analysis for efficient separate compilation of object-oriented languages
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Ada 2005 Reference Manual. Language and Standard Libraries: International Standard ISO/IEC 8652/1995(E) with Technical Corrigendum 1 and Amendment 1 (Lecture Notes in Computer Science)
Dynamic type checking in jalapeño
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Perfect hashing as an almost perfect subtype test
ACM Transactions on Programming Languages and Systems (TOPLAS)
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
Towards a full multiple-inheritance virtual machine
Proceedings of the Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Empirical assessment of C++-like implementations for multiple inheritance
Proceedings of the Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Metamodeling semantics of multiple inheritance
Science of Computer Programming
Efficiency of subtype test in object oriented languages with generics
Proceedings of the 8th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Hi-index | 0.00 |
Object-oriented languages involve a threefold tradeoff between runtime efficiency, expressiveness (multiple inheritance), and modularity, i.e. open-world assumption (OWA). Runtime efficiency is conditioned by both the implementation technique and compilation scheme. The former specifies the data structures that support method invocation, attribute access and subtype testing. The latter consists of the production line of an executable from the source code. Many implementation techniques have been proposed and several compilation schemes can be considered from fully global compilation under the closed-world assumption (CWA) to separate compilation with dynamic loading under the OWA, with midway solutions. This article reviews a significant subset of possible combinations and presents a systematic, empirical comparison of their respective efficiencies with all other things being equal. The testbed consists of the Prm compiler that has been designed for this purpose. The considered techniques include C++ subobjects, coloring, perfect hashing, binary tree dispatch and caching. A variety of processors were considered. Qualitatively, these first results confirm the intuitive or theoretical abstract assessments of the tested approaches. As expected, efficiency increases as CWA strengthens. From a quantitative standpoint, the results are the first to precisely compare the efficiency of techniques that are closely associated with specific languages like C++ and Eiffel. They also confirm that perfect hashing should be considered for implementing Java and .Net interfaces.