Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
The programming language Oberon
Software—Practice & Experience
Efficient implementation of lattice operations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient management of transitive relationships in large data and knowledge bases
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
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
Handbook of theoretical computer science (vol. A)
Average-case analysis of algorithms and data structures
Handbook of theoretical computer science (vol. A)
Type-extension type test can be performed in constant time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modula-3
Eiffel: the language
Object-oriented programming in Oberon-2
Object-oriented programming in Oberon-2
Selector table indexing & sparse arrays
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Efficient handling of multiple inheritance hierarchies
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Programming in Ada95
Bidirectional object layout for separate compilation
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Minimizing row displacement dispatch tables
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
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Theoretical Computer Science
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
Java virtual machine
Fast and compact dispatching for dynamic object-oriented languages
Information Processing Letters
Time and space efficient method-lookup for object-oriented programs
Proceedings of the seventh annual ACM-SIAM symposium on Discrete algorithms
Communications of the ACM
Perfect hashing functions: a single probe retrieving method for static sets
Communications of the ACM
Communications of the ACM
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)
Hacker's Delight
Efficient Polymorphic Calls
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
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
Incremental algorithms for dispatching in dynamically typed languages
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type Inference for Late Binding: The SmallEiffel Compiler
JMLC '97 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Message Dispatch on Pipelined Processors
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Bit-Vector Encoding for Partially Ordered Sets
ORDAL '94 Proceedings of the International Workshop on Orders, Algorithms, and Applications
On the Move to Meaningful Internet Systems, 2002 - DOA/CoopIS/ODBASE 2002 Confederated International Conferences DOA, CoopIS and ODBASE 2002
"Real World" as an Argument for Covariant Specialization in Programming and Modeling
OOIS '02 Proceedings of the Workshops on Advances in Object-Oriented Information Systems
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Register allocation & spilling via graph coloring
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Efficient subtyping tests with PQ-encoding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Common Lisp: The Language
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
SableVM: a research framework for the efficient execution of java bytecode
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Dynamic type checking in jalapeño
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Extensible encoding of type hierarchies
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming in Scala: A Comprehensive Step-by-step Guide
Programming in Scala: A Comprehensive Step-by-step Guide
Ada 2005 reference manual: language and standard libraries
Ada 2005 reference manual: language and standard libraries
Empirical assessment of object-oriented implementations with multiple inheritance and static typing
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
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
Open and efficient type switch for C++
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Subtype tests are an important issue in the implementation of object-oriented programming languages. Many techniques have been proposed, but none of them perfectly fulfills the five requirements that we have identified: constant-time, linear-space, multiple inheritance, dynamic loading and inlining. In this article, we propose a subtyping test implementation that involves a combination of usual hashtables and Cohen's display, which is a well-known technique for single inheritance hierarchies. This novel approach is based on perfect hashing, that is, an optimized and truly constant-time variant of hashing that applies to immutable hashtables. We show that the resulting technique closely meets all five requirements. Furthermore, in the framework of Java-like languages—characterized by single inheritance of classes and multiple subtyping of interfaces—perfect hashing also applies to method invocation when the receiver is typed by an interface. The proposed technique is compared to some alternatives, including the proposal by Palacz and Vitek [2003]. Time-efficiency is assessed at the cycle level in the framework of Driesen's pseudo-code and the linear-space criterion is validated by statistical simulation on benchmarks consisting of large-scale class hierarchies.