GALILEO: a strongly-typed, interactive conceptual language
ACM Transactions on Database Systems (TODS)
On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Proc. of the thirteenth spring school of the LITP on Combinators and functional programming languages
IDL: sharing intermediate representations
ACM Transactions on Programming Languages and Systems (TOPLAS)
A recovery algorithm for a high-performance memory-resident database system
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
Fast dispatch mechanisms for stock hardware
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
A fast method dispatcher for compiled languages with multiple inheritance
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
An object addressing mechanism for statically typed languages with multiple inheritance
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
The interface description language: definition and use
The interface description language: definition and use
Extending the database relational model to capture more meaning
ACM Transactions on Database Systems (TODS)
An implementation of GEM: supporting a semantic data model on a relational back-end.
SIGMOD '84 Proceedings of the 1984 ACM SIGMOD international conference on Management of data
Implementing relational views of programs
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Physical design and query compilation for a semantic data model (assuming memory residence)
Physical design and query compilation for a semantic data model (assuming memory residence)
CLOStrophobia: its etiology and treatment
ACM SIGPLAN OOPS Messenger
Bidirectional object layout for separate compilation
Proceedings of the tenth annual 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
Message Dispatch on Pipelined Processors
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
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
Vertical object layout and compression for fixed heaps
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Two-dimensional bidirectional object layout
ACM Transactions on Programming Languages and Systems (TOPLAS)
Perfect hashing as an almost perfect subtype test
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Vertical object layout and compression for fixed heaps
Semantics and algebraic specification
Efficient compilation of .NET programs for embedded systems
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
Hi-index | 0.00 |
Much recent work in polymorphic programming languages allows subtyping and multiple inheritance for records. In such systems, we would like to extract a field from a record with the same efficiency as if we were not making use of subtyping and multiple inheritance. Methods currently used make field extraction 3-5 times slower, which can produce a significant overall performance slowdown.We describe a record layout algorithm that allows us to assign a fixed offset to each field name. This allows field extraction to done just as quickly as in systems that do not provide multiple inheritance. Assigning fixed offsets may require us to leave gaps in some records (and waste space). However, by placing fields at both positive and negative offsets we can drastically reduce the amount of wasted space. Finding an optimal layout is NP-hard, so we propose and analyze heuristic algorithms for producing good two-direction record layouts.In a trial run, our algorithm produced a fixed layout for the instance variables of the 563 flavors of a Lisp Flavors system; this fixed layout only wastes 6% of the total space consumed by a collection of one instance of each flavor.