New trie data structures which support very fast search operations
Journal of Computer and System Sciences
SMALLTALK-80: the interactive programming environment
SMALLTALK-80: the interactive programming environment
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
Two algorithms for maintaining order in a list
STOC '87 Proceedings of the nineteenth annual ACM symposium on Theory of computing
CommonLoops: merging Lisp and object-oriented programming
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Efficient implementation of lattice operations
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Efficient method dispatch in PCL
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Type-extension type test can be performed in constant time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Static type checking of multi-methods
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Eiffel: the language
Optimizing method search with lookup caches and incremental coloring
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Selector table indexing & sparse arrays
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Dynamic Perfect Hashing: Upper and Lower Bounds
SIAM Journal on Computing
Optimizing multi-method dispatch using compressed dispatch tables
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
Minimizing row displacement dispatch tables
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
The direct cost of virtual function calls in C++
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
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
Fast algorithms for compressed multimethod dispatch table generation
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Multi-method dispatching: a geometric approach with applications to string matching problems
STOC '99 Proceedings of the thirty-first annual ACM symposium on Theory of computing
Time and space efficient method-lookup for object-oriented programs
Proceedings of the seventh annual ACM-SIAM symposium on Discrete algorithms
Incremental encoding of multiple inheritance hierarchies
Proceedings of the eighth international conference on Information and knowledge management
Efficient multiple and predicated dispatching
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Space and time-efficient memory layout for multiple inheritance
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient message dispatch in object-oriented systems
ACM SIGPLAN Notices
Efficient subtyping tests with PQ-encoding
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Multi-Methods in a Statically-Typed Programming Language
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Efficient Dynamic Look-Up Strategy for Multi-Methods
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
Taming Message Passing: Efficient Method Look-Up for Dynamically Typed Languages
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
Message Dispatch on Pipelined Processors
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
The Complexity of Type Analysis of Object Oriented Programs
ECCOP '98 Proceedings of the 12th 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
Compact Dispatch Tables for Dynamically Typed Object Oriented Languages
CC '96 Proceedings of the 6th International Conference on Compiler Construction
Efficient Dynamic Method-Lookup for Object Oriented Languages (Extended Abstract)
ESA '96 Proceedings of the Fourth Annual European Symposium on Algorithms
Sparse Term Encoding for Dynamic Taxonomies
ICCS '96 Proceedings of the 4th International Conference on Conceptual Structures: Knowledge Representation as Interlingua
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Maintaining order in a linked list
STOC '82 Proceedings of the fourteenth annual ACM symposium on Theory of computing
Scaling and related techniques for geometry problems
STOC '84 Proceedings of the sixteenth annual ACM symposium on Theory of computing
Efficient Compression of Generic Function Dispatch Tables
Efficient Compression of Generic Function Dispatch Tables
Software and Hardware Techniques for Efficient Polymorphic Calls
Software and Hardware Techniques for Efficient Polymorphic Calls
Message Dispatch on Modern Computer Architectures
Message Dispatch on Modern Computer Architectures
Dynamic type checking in jalapeño
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Incremental algorithms for dispatching in dynamically typed languages
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Quantifying and evaluating the space overhead for alternative C++ memory layouts
Software—Practice & Experience
A Reflective Implementation of Java Multi-Methods
IEEE Transactions on Software Engineering
Software—Practice & Experience - Research Articles
Polymorphic typed defunctionalization and concretization
Higher-Order and Symbolic Computation
Multiple dispatch in reflective runtime environment
Computer Languages, Systems and Structures
Efficient distributed subtyping tests
Proceedings of the 2007 inaugural international conference on Distributed event-based systems
Efficient dynamic dispatching with type slicing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Extensible encoding of type hierarchies
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Two-dimensional bidirectional object layout
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software—Practice & Experience
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
A slice-based decision procedure for type-based partial orders
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Hi-index | 0.00 |
The dispatching problem can be solved very efficiently in the single-inheritance~(SI) setting. In this paper we show how to extend one such solution to the multiple-inheritance~(MI) setting. This generalization comes with an increase to the space requirement by a small factor of κ This factor can be thought of as a metric of the complexity of the topology of the inheritance hierarchy.On a data set of~35 hierarchies totaling some~64 thousand types, our dispatching data structure, based on a novel type slicing technique, exhibits very significant improvements over previous dispatching techniques, not only in terms of the time for creating the underlying data structure, but also in terms of total space used.The cost is in the dispatching time, which is no longer constant, but doubly logarithmic in the number of types. Conversely, by using a simple binary search, dispatching time is logarithmic in the number of different implementations. In practice dispatching uses one indirect branch and, on average, only~2.5 binary branches.Our results also have applications to the space-efficient implementation of the more general problem of dispatching multi-methods.A by-product of our type slicing technique is an incremental algorithm for constant-time subtyping tests with favorable memory requirements. (The incremental version of the subtyping problem is to maintain the subtyping data structure in presence of additions of types to the inheritance hierarchy.)