Abstract
Object-oriented programming represents an original implementation issue due to its philosophy of making the program behavior depend on the dynamic type of objects. This is expressed by the late binding mechanism, aka message sending. The underlying principle is that the address of the actually called procedure is not statically determined at compile-time, but depends on the dynamic type of a distinguished parameter known as the receiver. A similar issue arises with attributes, because their position in the object layout may also depend on the object's dynamic type. Furthermore, subtyping introduces another original feature (i.e., runtime subtype checks). All three mechanisms need specific implementations and data structures. In static typing, late binding is generally implemented with so-called virtual function tables. These tables reduce method calls to pointers to functions via a small fixed number of extra indirections. It follows that object-oriented programming yields some overhead, as compared to the usual procedural languages.
The different techniques and their resulting overhead depend on several parameters. First, inheritance and subtyping may be single or multiple, and even a mixing is possible, as in Java and ˙NET which present single inheritance for classes and multiple subtyping for interfaces. Multiple inheritance is a well-known complication. Second, the production of executable programs may involve various schemes, from global compilation, which implies the closed-world assumption (CWA), as the whole program is known at compile time, to separate compilation and dynamic loading, where each program unit is compiled and loaded independently of any usage, hence under the open-world assumption (OWA). Global compilation is well-known to facilitate optimization.
This article reviews the various implementation techniques available in static typing and in the three cases of single inheritance, multiple inheritance, and multiple subtyping. This language-independent survey focuses on separate compilation and dynamic loading, as they represent the most commonly used and the most demanding framework. However, many works have been undertaken in the global compilation framework, mostly for dynamically typed languages, but also applied to the EIFFEL language. Hence, we also examine global techniques and how they can improve implementation efficiency. Finally, mixed frameworks that combine open and closed world assumptions are considered. For instance, just-in-time (JIT) compilers work under provisional CWA, at the expense of possible recompilations. In contrast, we present an experimental compiler-linker, where separate compilation implies the OWA, whereas the whole program is finally linked under the CWA.
Supplemental Material
Available for Download
Online appendix to implementing statically typed object-oriented programming languages on article 18.
- Agesen, O. 1996. Concrete type inference: Delivering object-oriented applications. Ph.D. dissertation, Stanford University, Stanford, CA. Google ScholarDigital Library
- Agesen, O. and Holzle, U. 1995. Type feedback vs. concrete type inference: A comparison of optimization techniques for object-oriented languages. ACM SIGPLAN Not. 30, 10, 91--107. Google ScholarDigital Library
- Alpern, B., Attanasio, C., Barton, J., Cocchi, A., Hummel, S., Lieber, D., Ngo, T., Mergen, M., Shepherd, J., and Smith, S. 1999. Implementing Jalapeno in Java. ACM SIGPLAN Not. 34,10, 314--324. Google ScholarDigital Library
- Alpern, B., Cocchi, A., Fink, S., and Grove, D. 2001a. Efficient implementation of Java interfaces: Invoke interface considered harmless. ACM SIGPLAN Not. 36, 10, 108--124. Google ScholarDigital Library
- Alpern, B., Cocchi, A., and Grove, D. 2001b. Dynamic type checking in Jalapeno In Proceedings of the 2001 Symposium of the Java#8482;Virtual Machine Research and Technology Symposium. Vol. 1, USENIX Association, Berkeley, CA. Google ScholarDigital Library
- Ancona, D., Lagorio, G., and Zucca, E. 2003. Jam—Designing a Java extension with mixins. ACM Trans. Program. Lang. Syst. 25, 5, 641--712. Google ScholarDigital Library
- André, P. and Royer, J.-C. 1992. Optimizing method search with lookup caches and incremental coloring. ACM SIGPLAN Not. 27, 10, 110--126. Google ScholarDigital Library
- Arnold, M., Fink, S., Grove, D., Hind, M., and Sweeney, P. 2005. A survey of adaptive optimization in virtual machines. Proc. IEEE 93, 2, 449--466.Google ScholarCross Ref
- Bacon, D. and Sweeney, P. 1996. Fast static analysis of C++ virtual function calls. ACM SIGPLAN Not. 31, 10, 324--341. Google ScholarDigital Library
- Blackburn, S. M., Garner, R., Hoffmann, C., Khang, A. M., McKinley, K. S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S. Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J. E. B., Moss, B., Phansalkar, A., Stefanovic, D., VanDrunen, T., von Dincklage, D., and Wiedermann, B. 2006. The DaCapo benchmarks: Java benchmarking development and analysis. ACM SIGPLAN Not. 41, 10, 169--190. Google ScholarDigital Library
- Boehm, H.-J. 1993. Space-efficient conservative garbage collection. ACM SIGPLAN Not. 28, 6, 197--206. Google ScholarDigital Library
- Boucher, D. 2000. GOld: A link-time optimizer for Scheme. In Proceedings of the Workshop on Scheme and Functional Programming. (Rice Tech. rep. 00-368, 1--12.)Google Scholar
- Boyland, J. and Castagna, G. 1996. Type-safe compilation of covariant specialization: A practical case. In Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1098. Springer, Berlin, 3--25. Google ScholarDigital Library
- Bracha, G. and Cook, W. 1990. Mixin-based inheritance. ACM SIGPLAN Not. 25, 10, 303--311. Google ScholarDigital Library
- Burton, K. R. 2002. NET Common Language Runtime Unleashed. SAMS Publishers. Google ScholarDigital Library
- Calder, B. and Grunwald, D. 1994. Reducing indirect function call overhead in C++ programs. In Proceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'94). ACM, New York, 397--408. Google ScholarDigital Library
- Cargill, T. A. 1991. Controversy: The case against multiple inheritance in C++. Comput. Syst. 4, 1, 69--82.Google Scholar
- Castagna, G. 1997. Object-Oriented Programming: A United Foundation. Birkhauser. Google ScholarDigital Library
- Chambers, C. and Ungar, D. 1989. Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented language. ACM SIGPLAN Not. 24, 10, 146--160. Google ScholarDigital Library
- Chen, W., Turau, V., and Klas, W. 1994. Efficient dynamic look-up strategy for multi-methods. In Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 821, Springer, Berlin, 408--431. Google ScholarDigital Library
- Chilimbi, T. M., Davidson, B., and Larus, J. R. 1999. Cache-conscious structure deffinition. ACM SIGPLAN Not. 34, 5, 1--12. Google ScholarDigital Library
- Click, C. and Rose, J. 2002. Fast subtype checking in the Hotspot JVM. In Proceedings of the Joint ACM-ISCOPE Conference on Java Grande (JGI'02). ACM, New York, 96--107. Google ScholarDigital Library
- Cohen, N. H. 1991. Type-extension type tests can be performed in constant time. ACM Trans. Program. Lang. Syst. 13, 4, 626--629. Google ScholarDigital Library
- Collin, S., Colnet, D., and Zendra, O. 1997. Type inference for late binding. the SmallEiffel compiler. In Proceedings of the Joint Modular Languages Conference. Lecture Notes in Computer Science, vol. 1204. Springer, Berlin, 67--81. Google ScholarDigital Library
- Cook, W. R. 1989. A proposal for making Eiffel type-safe. In Proceedings of the European Conference on Object-Oriented Programming. S. Cook, Ed., Cambridge University Press, 57--70.Google ScholarDigital Library
- Czech, Z. J., Havas, G., and Majewski, B. S. 1997. Perfect hashing. Theor. Comput. Sci. 182, 1, 2, 1--143. Google ScholarDigital Library
- Dean, J., Chambers, C., and Grove, D. 1995. Selective specialization for object-oriented languages. ACM SIGPLAN Not. 30, 6, 93--102. Google ScholarDigital Library
- Dean, J., Grove, D., and Chambers, C. 1995. Optimization of object-oriented programs using static class hierarchy analysis. In Proceedings of the European Conference on Object-Oriented Programming. W. Olthoff Ed. Lecture Notes in Computer Science, vol. 952, Springer, Berlin, 77--101. Google ScholarDigital Library
- Dijkstra, E. W. 1960. Recursive programming. Numer. Math. 2, 312--318.Google ScholarDigital Library
- Dixon, R., McKee, T., Schweitzer, P., and Vaughan, M. 1989. A fast method dispatcher for compiled languages with multiple inheritance. ACM SIGPLAN Not. 24, 10, 211--214. Google ScholarDigital Library
- Driesen, K. 2001. Efficient Polymorphic Calls. Kluwer, Amsterdam. Google ScholarDigital Library
- Driesen, K. and Holzle, U. 1995. Minimizing row displacement dispatch tables. ACM SIGPLAN Not. 30, 10, 141--155. Google ScholarDigital Library
- Driesen, K. and Holzle, U. 1996. The direct cost of virtual function calls in C++. ACM SIGPLAN Not. 31, 10, 306--323. Google ScholarDigital Library
- Driesen, K., Holzle, U., and Vitek, J. 1995. Message dispatch on pipelined processors. In Proceedings of the European Conference on Object-Oriented Programming. W. Olthoff Ed. Lecture Notes in Computer Science, vol. 952, Springer, Berlin, 253--282. Google ScholarDigital Library
- Driesen, K. and Zendra, O. 2002. Stress-testing control structures for dynamic dispatch in Java. In Proceedings of the Java Virtual Machine Research and Technology Symposium (JVM'02). USENIX Association, Berkeley, CA, 105--118. Google ScholarDigital Library
- Ducournau, R. 1991. Yet Another Frame-based Object-Oriented Language: YAFOOL Reference Manual. Sema Group, Montrouge, France.Google Scholar
- Ducournau, R. 1997. La compilation de l'envoi de message dans les langages dynamiques. L'Objet 3, 3, 241--276.Google Scholar
- Ducournau, R. 2011. Coloring, a versatile technique for implementing object-oriented languages. Softw. Prac. Exper. 41, 6, 627--659. Google ScholarDigital Library
- Ducournau, R. 2008. Perfect hashing as an almost perfect subtype test. ACM Trans. Program. Lang. Syst. 30, 6, 1--56. Google ScholarDigital Library
- Ducournau, R., Habib, M., Huchard, M., and Mugnier, M.-L. 1994. Proposal for a monotonic multiple inheritance linearization. ACM SIGPLAN Not. 29, 10, 164--175. Google ScholarDigital Library
- Ducournau, R. and Morandat, F. 2011. Perfect class hashing and numbering for object-oriented implementation. Softw. Prac. Exper. 41, 6, 661--694. Google ScholarDigital Library
- Ducournau, R., Morandat, F., and Privat, J. 2009. Empirical assessment of object-oriented implementations with multiple inheritance and static typing. ACM SIGPLAN Not. 44, 10, 41--60. Google ScholarDigital Library
- Ducournau, R. and Privat, J. 2011. Metamodeling semantics of multiple inheritance. Science Comput. Program. 76, 7, 555--586. Google ScholarDigital Library
- Dujardin, E., Amiel, E., and Simon, E. 1998. Fast algorithms for compressed multimethod dispatch table generation. ACM Trans. Program. Lang. Syst. 20, 1, 116--165. Google ScholarDigital Library
- Eckel, N. and Gil, J. 2000. Empirical study of object-layout and optimization techniques. In Proceedings of the European Conference on Object-Oriented Programming. E. Bertino Ed. Lecture Notes in Computer Science, vol. 1850, Springer, Berlin, 394--421. Google ScholarDigital Library
- Ellis, M. and Stroustrup, B. 1990. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Ernst, E. 2002. Safe dynamic multiple inheritance. Nord. J. Comput 9, 1, 191--208. Google ScholarDigital Library
- Fähndrich, M. and Leino, K. R. M. 2003. Declaring and checking non-null types in an object-oriented language. ACM SIGPLAN Not. 38, 11, 302--312. Google ScholarDigital Library
- Gagnon, E. M. and Hendren, L. J. 2001. SableVM: A research framework for the efficient execution of Java bytecode. In Proceedings of the Symposium on Java#8482;Virtual Machine Research and Technology Symposium (JVM'01). Vol. 1, USENIX Association, Berkeley, CA, 27--40. Google ScholarDigital Library
- Garey, M. R. and Johnson, D. S. 1979. Computers and Intractability. A Guide to the Theory of NP-Completeness. W. H. Freeman Co., San Francisco, CA. Google ScholarDigital Library
- Gil, J. and Itai, A. 1998. The complexity of type analysis of object oriented programs. In Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1445. Springer, Berlin, 601--634. Google ScholarDigital Library
- Gil, J. and Sweeney, P. 1999. Space and time-efficient memory layout for multiple inheritance. ACM SIGPLAN Not. 34, 10, 256--275. Google ScholarDigital Library
- Gil, J. and Zibin, Y. 2005. Efficient subtyping tests with PQ-encoding. ACM Trans. Program. Lang. Syst. 27, 5, 819--856. Google ScholarDigital Library
- Gil, J. and Zibin, Y. 2007. Efficient dynamic dispatching with type slicing. ACM Trans. Program. Lang. Syst. 30, 1, 5, 1--53. Google ScholarDigital Library
- Goldberg, A. and Robson, D. 1983. Smalltalk-80, the Language and its Implementation. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Gosling, J., Joy, B., Steele, G., and Bracha, G. 2005. The JAVA Language Specification 3rd Ed. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Grove, D. and Chambers, C. 2001. A framework for call graph construction algorithms. ACM Trans. Program. Lang. Syst. 23, 6, 685--746. Google ScholarDigital Library
- Holst, W., Szafron, D., Leontiev, Y., and Pang, C. 1998. Multi-method dispatch using single-receiver projections. Tech. rep. TR-98-03, University of Alberta, Edmonton.Google Scholar
- Hölzle, U., Chambers, C., and Ungar, D. 1991. Optimizing dynamically-typed object-oriented languages with polymorphic inline caches. In Proceedings of the European Conference on Object-Oriented Programming, P. America Ed. Lecture Notes in Computer Science, vol. 512, Springer, Berlin, 21--38. Google ScholarDigital Library
- Huchard, M. and Leblanc, H. 2000. Computing interfaces in Java. In Proceedings of the IEEE International Conference on Automated Software Engineering (ASE'00). IEEE. Los Alamitos, CA, 317--320. Google ScholarDigital Library
- Hullot, J.-M. 1985. Ceyx version 15. Tech. rep. 44-46, INRIA.Google Scholar
- Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., and Kay, A. 1997. Back to the future: The story of Squeak—A usable Smalltalk written in itself. ACM SIGPLAN Not. 32, 10. 318--326. Google ScholarDigital Library
- Jones, R. and Lins, R. 1996. Garbage Collection. Wiley, New York.Google Scholar
- Jul, E. 2008. Precomputing method lookup. In Proceedings of the 22nd European Conference on Object-Oriented Programming (ECOOP'08).Google Scholar
- Kennedy, A. and Syme, D. 2001. Design and implementation of generics for the ˙NET common language runtime. ACM SIGPLAN Not. 36, 5, 1--12. Google ScholarDigital Library
- Kiczales, G. and Rodriguez, L. 1990. Efficient method dispatch in PCL. In Proceedings of the ACM Conference on Lisp and Functional Programming. ACM, New York, 99--105. Google ScholarDigital Library
- Knuth, D. E. 1973. The Art of Computer Programming, Sorting and Searching. Vol. 3. Addison- Wesley, Reading, MA.Google Scholar
- Koenig, A. 1998. Standard -- The C++ language. Tech. rep. ISO/IEC 14882:1998.Google Scholar
- Information Technology Council (NCTIS). http://www.nctis.org/cplusplus.htm.Google Scholar
- Krall, A. and Grafl, R. 1997. CACAO - A 64 bits JavaVM just-in-time compiler. Concurrency. Pract. Exper. 9, 11, 1017--1030.Google ScholarCross Ref
- Krogdahl, S. 1985. Multiple inheritance in Simula-like languages. BIT 25, 2, 318--326. Google ScholarDigital Library
- Lippman, S. B. 1996. Inside the C++ Object Model. Addison-Wesley Professional. Google ScholarDigital Library
- Liskov, B., Curtis, D., Day, M., Ghemawat, S., Gruber, R., Johnson, P., and Myers, A. C. 1995. THETA Reference Manual. Tech. rep. MIT, Cambridge, MA.Google Scholar
- Meyer, B. 1992. Eiffel:The Language. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Meyer, B. 1997. Object-Oriented Software Construction 2nd Ed. Prentice-Hall, Englewood Cliffs, NJ. Google ScholarDigital Library
- Meyer, J. and Downing, T. 1997. JAVA Virtual Machine. O'Reilly. Google ScholarDigital Library
- Microsoft. 2001. C# language specifications, v0.28. Tech. rep. Microsoft Corp.Google Scholar
- Mugridge, W. B., Hamer, J., and Hosking, J. G. 1991. Multi-methods in a statically-typed programming language. In Proceedings of the European Conference on Object-Oriented Programming. P. America Ed. Lecture Notes in Computer Science, vol. 512. Springer, Berlin, 307--324. Google ScholarDigital Library
- Muthukrishnan, S. and Muller, M. 1996. Time and space efficient method lookup for object-oriented languages. In Proceedings of the ACM-SIAM Symposium on Discrete Algorithms, ACM/SIAM, 42--51. Google ScholarDigital Library
- Myers, A. 1995. Bidirectional object layout for separate compilation. ACM SIGPLAN Not. 30, 10, 124--139. Google ScholarDigital Library
- Odersky, M., Spoon, L., and Venners, B. 2008. Programming In Scala. A Comprehensive Step-By-Step Guide. Artima. Google ScholarDigital Library
- Odersky, M. and Wadler, P. 1997. Pizza into Java: Translating theory into practice. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM, New York, 146--159. Google ScholarDigital Library
- Palacz, K. and Vitek, J. 2003. Java subtype tests in real-time. In Proceedings of the European Conference on Object-Oriented Programming. L. Cardelli Ed., Lecture Notes in Computer Science, vol. 2743. Springer, Berlin, 378--404.Google Scholar
- Privat, J. and Ducournau, R. 2005. Link-time static analysis for efficient separate compilation of object-oriented languages. In Proceedings of the 6th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'05). ACM, New York, 20--27. Google ScholarDigital Library
- Pugh, W. and Weddell, G. 1990. Two-directional record layout for multiple inheritance. ACM SIGPLAN Not. 25, 6, 85--91. Google ScholarDigital Library
- Pugh, W. and Weddell, G. E. 1993. On object layout for multiple inheritance. Tech. rep., CS-93-22, University of Waterloo.Google Scholar
- Queinnec, C. 1998. Fast and compact dispatching for dynamic object-oriented languages. Inf. Process. Lett. 64, 6, 315--321. Google ScholarDigital Library
- Raynaud, O. and Thierry, E. 2001. A quasi-optimal bit-vector encoding of tree hierarchies. Application to Efficient type inclusion tests. In Proceedings of the European Conference on Object-Oriented Programming. J. L. Knudsen Ed. Lecture Notes in Computer Science, vol. 2072. Springer, Berlin, 165--180. Google ScholarDigital Library
- Sakkinen, M. 1989. Disciplined inheritance. In Proceedings of the European Conference on Object-Oriented Programming. S. Cook Ed. Cambridge University Press, 39--58.Google Scholar
- Sakkinen, M. 1992. A critique of the inheritance principles of C++. Comput. Syst. 5, 1, 69--110.Google Scholar
- Schubert, L., Papalaskaris, M., and Taugher, J. 1983. Determining type, part, color and time relationship. Computer 16, 53--60. Google ScholarDigital Library
- Shang, D. L. 1996. Are cows animals? http://www.visviva.com/transframe/papers/covar.htm.Google Scholar
- Shivers, O. 1991. Control-flow analysis of higher-order languages. Ph.D. dissertation, Carnegie Mellon University. Google ScholarDigital Library
- Smaragdakis, Y. and Batory, D. 2002. Mixin layers: An object-oriented implementation technique for refinements and collaboration-based designs. ACM Trans. Soft. Eng. Meth. 11, 2, 215--255. Google ScholarDigital Library
- Sprugnoli, R. 1977. Perfect hashing functions: A single probe retrieving method for static sets. Commun. ACM 20, 11, 841--850. Google ScholarDigital Library
- Steele, G. L. 1990. Common Lisp, the Language. 2nd Ed. Digital Press. Google ScholarDigital Library
- Stefik, M. and Bobrow, D. 1986. Object-oriented programming: Themes and variations. AI Magazine 6, 4, 40--62. Google ScholarDigital Library
- Stroustrup, B. 1998. The C++ Programming Language 3rd Ed. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Sweeney, P. F. and Burke, M. G. 2003. Quantifying and evaluating the space overhead for alternative C++ memory layouts. Softw. Pract. Exper. 33, 7, 595--636. Google ScholarDigital Library
- Taft, S. T., Duff, R. A., Brukardt, R. L., Ploedereder, E., and Leroy, P. (eds.) 2006. Ada Reference Manual: Language and Standard Libraries. Lecture Notes in Computer Science, vol. 4348. Springer, Berlin. Google ScholarDigital Library
- Tarjan, R. E. and Yao, A.C. C. 1979. Storing a sparse table. Comm. ACM 22, 11, 606--611. Google ScholarDigital Library
- Tip, F. and Sweeney, P. F. 2000. Class hierarchy specialization. Acta Informatica 36, 12, 927--982. Google ScholarDigital Library
- Torgersen, M. 1998. Virtual types are statically safe. In Proceedings of the 5th Workshop on Foundations of Object-Oriented Languages (FOOL 5).Google Scholar
- Ungar, D. and Smith, R. 1987. SELF: The power of simplicity. ACM SIGPLAN Not. 22,12, 227--242. Google ScholarDigital Library
- VanHilst, M. and Notkin, D. 1996. Using role components to implement collaboration-based designs. ACM SIGPLAN Not. 31, 10, 359--369. Google ScholarDigital Library
- Vitek, J. and Horspool, R. N. 1994. Taming message passing: Efficient method look-up for dynamically typed languages. In Proceedings of the European Conference on Object-Oriented Programming. M. Tokoro and R. Pareschi Eds. Lecture Notes in Computer Science, vol. 821. Springer, Berlin, 432--449. Google ScholarDigital Library
- Vitek, J., Horspool, R. N., and Krall, A. 1997. Efficient type inclusion tests. ACM SIGPLAN Not. 32, 10, 142--157. Google ScholarDigital Library
- Vitter, J. S. and Flajolet, P. 1990. Average-case analysis of algorithms and data structures. In Algorithms and Complexity. Handbook of Theoretical Computer Science. Vol. 1, J. Van Leeuwen Ed. Elsevier, Amsterdam, 431--524. Google ScholarDigital Library
- Waldo, J. 1991. Controversy: The case for multiple inheritance in C++. Comput. Syst. 4, 2, 157--171.Google Scholar
- Wang, T. and Smith, S. 2001. Precise constraint-based type inference for Java. In Proceedings of the European Conference on Object-Oriented Programming. J. L. Knudsen Ed. Lecture Notes in Computer Science, vol. 2072. Springer, Berlin, 99--117. Google ScholarDigital Library
- Weber, F. 1992. Getting class correctness and system correctness equivalent—How to get covariant right. In Proceedings of the Conference on Technology of Object-Oriented Languages and Systems (TOOLS 8). R. Ege et al. Eds. 192--213. Google ScholarDigital Library
- Wilson, P. R. 1992. Uniprocessor garbage collection techniques. In Proceedings of the International Workshop on Memory Management (IWMM'92). Lecture Notes in Computer Science, vol. 637, Springer, Berlin, 1--42. Google ScholarDigital Library
- Zendra, O., Colnet, D., and Collin, S. 1997. Efficient dynamic dispatch without virtual function tables: The SmallEiffel compiler. ACM SIGPLAN Not. 32, 10, 125--141. Google ScholarDigital Library
- Zibin, Y. and Gil, J. 2002. Fast algorithm for creating space Efficient dispatching tables with application to multi-dispatching. ACM SIGPLAN Not. 37, 10, 142--160. Google ScholarDigital Library
- Zibin, Y. and Gil, J. 2003a. Incremental algorithms for dispatching in dynamically typed languages. ACM SIGPLAN Not. 38, 1, 126--138. Google ScholarDigital Library
- Zibin, Y. and Gil, J. 2003b. Two-dimensional bi-directional object layout. In Proceedings of the European Conference on Object-Oriented Programming. L. Cardelli Ed. Lecture Notes in Computer Science, vol. 2743, Springer, Berlin, 329--350.Google Scholar
Index Terms
- Implementing statically typed object-oriented programming languages
Recommendations
Empirical assessment of object-oriented implementations with multiple inheritance and static typing
OOPSLA '09Object-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 ...
Empirical assessment of object-oriented implementations with multiple inheritance and static typing
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applicationsObject-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 ...
Perfect hashing as an almost perfect subtype test
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, ...
Comments