{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:53:25Z","timestamp":1750308805560,"version":"3.41.0"},"reference-count":114,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2011,4,1]],"date-time":"2011-04-01T00:00:00Z","timestamp":1301616000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100002887","name":"Conseil R\u00e9gional Languedoc-Roussillon","doi-asserted-by":"publisher","award":["34750"],"award-info":[{"award-number":["34750"]}],"id":[{"id":"10.13039\/501100002887","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Comput. Surv."],"published-print":{"date-parts":[[2011,4]]},"abstract":"<jats:p>\n            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\n            <jats:italic>late binding<\/jats:italic>\n            mechanism, aka\n            <jats:italic>message sending<\/jats:italic>\n            . 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\n            <jats:italic>receiver<\/jats:italic>\n            . 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\n            <jats:italic>virtual function tables<\/jats:italic>\n            . 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.\n          <\/jats:p>\n          <jats:p>\n            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 \u02d9NET 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\n            <jats:italic>closed-world assumption<\/jats:italic>\n            (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\n            <jats:italic>open-world assumption<\/jats:italic>\n            (OWA). Global compilation is well-known to facilitate optimization.\n          <\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/1922649.1922655","type":"journal-article","created":{"date-parts":[[2011,5,3]],"date-time":"2011-05-03T12:48:53Z","timestamp":1304426933000},"page":"1-48","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Implementing statically typed object-oriented programming languages"],"prefix":"10.1145","volume":"43","author":[{"given":"Roland","family":"Ducournau","sequence":"first","affiliation":[{"name":"LIRMM -- CNRS and Universit\u00e9 Montpellier II, Cedex, France"}]}],"member":"320","published-online":{"date-parts":[[2011,4,29]]},"reference":[{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/217839.217847"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/320385.320418"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/504311.504291"},{"key":"e_1_2_2_5_1","unstructured":"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.   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."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/937563.937567"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/141937.141947"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2004.840305"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/236338.236371"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167515.1167488"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/173262.155109"},{"key":"e_1_2_2_12_1","volume-title":"Proceedings of the Workshop on Scheme and Functional Programming. (Rice Tech. rep. 00-368","author":"Boucher D.","year":"2000","unstructured":"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.) 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.)"},{"key":"e_1_2_2_13_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science","volume":"1098","author":"Boyland J.","unstructured":"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. 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."},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/97946.97982"},{"volume-title":"NET Common Language Runtime Unleashed","author":"Burton K. R.","key":"e_1_2_2_15_1","unstructured":"Burton , K. R. 2002. NET Common Language Runtime Unleashed . SAMS Publishers . Burton, K. R. 2002. NET Common Language Runtime Unleashed. SAMS Publishers."},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/174675.177973"},{"key":"e_1_2_2_17_1","first-page":"69","article-title":"Controversy: The case against multiple inheritance in C++","volume":"4","author":"Cargill T. A.","year":"1991","unstructured":"Cargill , T. A. 1991 . Controversy: The case against multiple inheritance in C++ . Comput. Syst. 4 , 1, 69 -- 82 . Cargill, T. A. 1991. Controversy: The case against multiple inheritance in C++. Comput. Syst. 4, 1, 69--82.","journal-title":"Comput. Syst."},{"volume-title":"Object-Oriented Programming: A United Foundation","author":"Castagna G.","key":"e_1_2_2_18_1","unstructured":"Castagna , G. 1997. Object-Oriented Programming: A United Foundation . Birkhauser . Castagna, G. 1997. Object-Oriented Programming: A United Foundation. Birkhauser."},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/74818.74831"},{"key":"e_1_2_2_20_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science","volume":"821","author":"Chen W.","unstructured":"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. 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."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/301631.301635"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/583810.583821"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115297"},{"key":"e_1_2_2_24_1","volume-title":"Proceedings of the Joint Modular Languages Conference. Lecture Notes in Computer Science","volume":"1204","author":"Collin S.","unstructured":"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. 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."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/32.4.305"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0304-3975(96)00146-6"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/223428.207119"},{"key":"e_1_2_2_28_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. W. Olthoff Ed. Lecture Notes in Computer Science","volume":"952","author":"Dean J.","unstructured":"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. 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."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01386232"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/74878.74900"},{"volume-title":"Efficient Polymorphic Calls","author":"Driesen K.","key":"e_1_2_2_31_1","unstructured":"Driesen , K. 2001. Efficient Polymorphic Calls . Kluwer , Amsterdam . Driesen, K. 2001. Efficient Polymorphic Calls. Kluwer, Amsterdam."},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/217839.217851"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/236338.236369"},{"key":"e_1_2_2_34_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. W. Olthoff Ed. Lecture Notes in Computer Science","volume":"952","author":"Driesen K.","unstructured":"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. 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."},{"volume-title":"Proceedings of the Java Virtual Machine Research and Technology Symposium (JVM'02)","author":"Driesen K.","key":"e_1_2_2_35_1","unstructured":"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. 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."},{"volume-title":"Yet Another Frame-based Object-Oriented Language: YAFOOL Reference Manual","author":"Ducournau R.","key":"e_1_2_2_36_1","unstructured":"Ducournau , R. 1991. Yet Another Frame-based Object-Oriented Language: YAFOOL Reference Manual . Sema Group , Montrouge, France . Ducournau, R. 1991. Yet Another Frame-based Object-Oriented Language: YAFOOL Reference Manual. Sema Group, Montrouge, France."},{"key":"e_1_2_2_37_1","first-page":"241","article-title":"La compilation de l'envoi de message dans les langages dynamiques","volume":"3","author":"Ducournau R.","year":"1997","unstructured":"Ducournau , R. 1997 . La compilation de l'envoi de message dans les langages dynamiques . L'Objet 3 , 3, 241 -- 276 . Ducournau, R. 1997. La compilation de l'envoi de message dans les langages dynamiques. L'Objet 3, 3, 241--276.","journal-title":"L'Objet"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.1022"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1391956.1391960"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/191081.191110"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.1024"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639949.1640093"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2010.10.006"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/271510.271521"},{"key":"e_1_2_2_45_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. E. Bertino Ed. Lecture Notes in Computer Science","volume":"1850","author":"Eckel N.","unstructured":"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. 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."},{"key":"e_1_2_2_46_1","unstructured":"Ellis M. and Stroustrup B. 1990. The Annotated C++ Reference Manual. Addison-Wesley Reading MA.   Ellis M. and Stroustrup B. 1990. The Annotated C++ Reference Manual. Addison-Wesley Reading MA."},{"key":"e_1_2_2_47_1","first-page":"191","article-title":"Safe dynamic multiple inheritance","volume":"9","author":"Ernst E.","year":"2002","unstructured":"Ernst , E. 2002 . Safe dynamic multiple inheritance . Nord. J. Comput 9 , 1, 191 -- 208 . Ernst, E. 2002. Safe dynamic multiple inheritance. Nord. J. Comput 9, 1, 191--208.","journal-title":"Nord. J. Comput"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/949343.949332"},{"key":"e_1_2_2_49_1","volume-title":"Proceedings of the Symposium on Java#8482;Virtual Machine Research and Technology Symposium (JVM'01)","volume":"1","author":"Gagnon E. M.","unstructured":"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. 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."},{"key":"e_1_2_2_50_1","unstructured":"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.   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."},{"key":"e_1_2_2_51_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. Lecture Notes in Computer Science","volume":"1445","author":"Gil J.","unstructured":"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. 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."},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/320385.320408"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086642.1086643"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/1290520.1290525"},{"key":"e_1_2_2_55_1","unstructured":"Goldberg A. and Robson D. 1983. Smalltalk-80 the Language and its Implementation. Addison-Wesley Reading MA.   Goldberg A. and Robson D. 1983. Smalltalk-80 the Language and its Implementation. Addison-Wesley Reading MA."},{"key":"e_1_2_2_56_1","unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2005. The JAVA Language Specification 3rd Ed. Addison-Wesley Reading MA.   Gosling J. Joy B. Steele G. and Bracha G. 2005. The JAVA Language Specification 3rd Ed. Addison-Wesley Reading MA."},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/506315.506316"},{"key":"e_1_2_2_58_1","unstructured":"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.  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."},{"key":"e_1_2_2_59_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming, P. America Ed. Lecture Notes in Computer Science","volume":"512","author":"Chambers C.","unstructured":"H&amp;#246;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. H&amp;#246;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."},{"volume-title":"Proceedings of the IEEE International Conference on Automated Software Engineering (ASE'00)","author":"Huchard M.","key":"e_1_2_2_60_1","unstructured":"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. 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."},{"key":"e_1_2_2_61_1","doi-asserted-by":"crossref","unstructured":"Hullot J.-M. 1985. Ceyx version 15. Tech. rep. 44-46 INRIA.  Hullot J.-M. 1985. Ceyx version 15. Tech. rep. 44-46 INRIA.","DOI":"10.1097\/00152193-198509000-00012"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/263700.263754"},{"key":"e_1_2_2_63_1","unstructured":"Jones R. and Lins R. 1996. Garbage Collection. Wiley New York.  Jones R. and Lins R. 1996. Garbage Collection. Wiley New York."},{"key":"e_1_2_2_64_1","volume-title":"Proceedings of the 22nd European Conference on Object-Oriented Programming (ECOOP'08)","author":"Jul E.","year":"2008","unstructured":"Jul , E. 2008 . Precomputing method lookup . In Proceedings of the 22nd European Conference on Object-Oriented Programming (ECOOP'08) . Jul, E. 2008. Precomputing method lookup. In Proceedings of the 22nd European Conference on Object-Oriented Programming (ECOOP'08)."},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/381694.378797"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/91556.91600"},{"volume-title":"The Art of Computer Programming, Sorting and Searching","author":"Knuth D. E.","key":"e_1_2_2_67_1","unstructured":"Knuth , D. E. 1973. The Art of Computer Programming, Sorting and Searching . Vol. 3 . Addison- Wesley , Reading, MA . Knuth, D. E. 1973. The Art of Computer Programming, Sorting and Searching. Vol. 3. Addison- Wesley, Reading, MA."},{"key":"e_1_2_2_68_1","first-page":"1998","article-title":"Standard -- The C++ language. Tech. rep","volume":"14882","author":"Koenig A.","year":"1998","unstructured":"Koenig , A. 1998 . Standard -- The C++ language. Tech. rep . ISO\/IEC 14882 : 1998 . Koenig, A. 1998. Standard -- The C++ language. Tech. rep. ISO\/IEC 14882:1998.","journal-title":"ISO\/IEC"},{"key":"e_1_2_2_69_1","unstructured":"Information Technology Council (NCTIS). http:\/\/www.nctis.org\/cplusplus.htm.  Information Technology Council (NCTIS). http:\/\/www.nctis.org\/cplusplus.htm."},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1096-9128(199711)9:11<1017::AID-CPE347>3.0.CO;2-0"},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01934377"},{"volume-title":"Inside the C++ Object Model","author":"Lippman S. B.","key":"e_1_2_2_72_1","unstructured":"Lippman , S. B. 1996. Inside the C++ Object Model . Addison-Wesley Professional . Lippman, S. B. 1996. Inside the C++ Object Model. Addison-Wesley Professional."},{"key":"e_1_2_2_73_1","unstructured":"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.  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."},{"key":"e_1_2_2_74_1","unstructured":"Meyer B. 1992. Eiffel:The Language. Prentice-Hall Englewood Cliffs NJ.   Meyer B. 1992. Eiffel:The Language. Prentice-Hall Englewood Cliffs NJ."},{"key":"e_1_2_2_75_1","volume-title":"Object-Oriented Software Construction","author":"Meyer B.","unstructured":"Meyer , B. 1997. Object-Oriented Software Construction 2 nd Ed. Prentice-Hall , Englewood Cliffs, NJ . Meyer, B. 1997. Object-Oriented Software Construction 2nd Ed. Prentice-Hall, Englewood Cliffs, NJ.","edition":"2"},{"key":"e_1_2_2_76_1","doi-asserted-by":"crossref","unstructured":"Meyer J. and Downing T. 1997. JAVA Virtual Machine. O'Reilly.   Meyer J. and Downing T. 1997. JAVA Virtual Machine. O'Reilly.","DOI":"10.1016\/S1353-4858(97)83033-4"},{"volume-title":"v0.28. Tech. rep","author":"Microsoft C","key":"e_1_2_2_77_1","unstructured":"Microsoft . 2001. C &amp;num; language specifications , v0.28. Tech. rep . Microsoft Corp . Microsoft. 2001. C&amp;num; language specifications, v0.28. Tech. rep. Microsoft Corp."},{"key":"e_1_2_2_78_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. P. America Ed. Lecture Notes in Computer Science","volume":"512","author":"Mugridge W. B.","unstructured":"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. 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."},{"volume-title":"Proceedings of the ACM-SIAM Symposium on Discrete Algorithms, ACM\/SIAM, 42--51","author":"Muthukrishnan S.","key":"e_1_2_2_79_1","unstructured":"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 . 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."},{"key":"e_1_2_2_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/217839.217849"},{"key":"e_1_2_2_81_1","unstructured":"Odersky M. Spoon L. and Venners B. 2008. Programming In Scala. A Comprehensive Step-By-Step Guide. Artima.   Odersky M. Spoon L. and Venners B. 2008. Programming In Scala. A Comprehensive Step-By-Step Guide. Artima."},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263715"},{"key":"e_1_2_2_83_1","doi-asserted-by":"crossref","unstructured":"Palacz K.\n     and \n      Vitek J\n  . \n  2003\n  . 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. \n  2743\n  . \n  Springer Berlin 378--404.  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.","DOI":"10.1007\/978-3-540-45070-2_17"},{"key":"e_1_2_2_84_1","doi-asserted-by":"publisher","DOI":"10.1145\/1108792.1108799"},{"key":"e_1_2_2_85_1","doi-asserted-by":"publisher","DOI":"10.1145\/93548.93556"},{"key":"e_1_2_2_86_1","unstructured":"Pugh W. and Weddell G. E. 1993. On object layout for multiple inheritance. Tech. rep. CS-93-22 University of Waterloo.  Pugh W. and Weddell G. E. 1993. On object layout for multiple inheritance. Tech. rep. CS-93-22 University of Waterloo."},{"key":"e_1_2_2_87_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0020-0190(97)00192-0"},{"key":"e_1_2_2_88_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. J. L. Knudsen Ed. Lecture Notes in Computer Science","volume":"2072","author":"Raynaud O.","unstructured":"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. 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."},{"key":"e_1_2_2_89_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. S. Cook Ed","author":"Sakkinen M.","year":"1989","unstructured":"Sakkinen , M. 1989 . Disciplined inheritance . In Proceedings of the European Conference on Object-Oriented Programming. S. Cook Ed . Cambridge University Press, 39--58. Sakkinen, M. 1989. Disciplined inheritance. In Proceedings of the European Conference on Object-Oriented Programming. S. Cook Ed. Cambridge University Press, 39--58."},{"key":"e_1_2_2_90_1","first-page":"69","article-title":"A critique of the inheritance principles of C++","volume":"5","author":"Sakkinen M.","year":"1992","unstructured":"Sakkinen , M. 1992 . A critique of the inheritance principles of C++ . Comput. Syst. 5 , 1, 69 -- 110 . Sakkinen, M. 1992. A critique of the inheritance principles of C++. Comput. Syst. 5, 1, 69--110.","journal-title":"Comput. Syst."},{"key":"e_1_2_2_91_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1983.1654198"},{"key":"e_1_2_2_92_1","unstructured":"Shang D. L. 1996. Are cows animals&amp;quest; http:\/\/www.visviva.com\/transframe\/papers\/covar.htm.  Shang D. L. 1996. Are cows animals&amp;quest; http:\/\/www.visviva.com\/transframe\/papers\/covar.htm."},{"key":"e_1_2_2_94_1","doi-asserted-by":"publisher","DOI":"10.1145\/505145.505148"},{"key":"e_1_2_2_95_1","doi-asserted-by":"publisher","DOI":"10.1145\/359863.359887"},{"key":"e_1_2_2_96_1","volume-title":"the Language","author":"Steele G. L.","unstructured":"Steele , G. L. 1990. Common Lisp , the Language . 2 nd Ed. Digital Press . Steele, G. L. 1990. Common Lisp, the Language. 2nd Ed. Digital Press.","edition":"2"},{"key":"e_1_2_2_97_1","doi-asserted-by":"publisher","DOI":"10.5555\/13432.13433"},{"key":"e_1_2_2_98_1","volume-title":"The C++ Programming Language","author":"Stroustrup B.","unstructured":"Stroustrup , B. 1998. The C++ Programming Language 3 rd Ed. Addison-Wesley , Reading, MA . Stroustrup, B. 1998. The C++ Programming Language 3rd Ed. Addison-Wesley, Reading, MA.","edition":"3"},{"key":"e_1_2_2_99_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.519"},{"key":"e_1_2_2_100_1","volume-title":"(eds.)","author":"Taft S. T.","year":"2006","unstructured":"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. 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."},{"key":"e_1_2_2_101_1","doi-asserted-by":"publisher","DOI":"10.1145\/359168.359175"},{"key":"e_1_2_2_102_1","doi-asserted-by":"publisher","DOI":"10.1007\/PL00013298"},{"key":"e_1_2_2_103_1","volume-title":"Proceedings of the 5th Workshop on Foundations of Object-Oriented Languages (FOOL 5).","author":"Torgersen M.","year":"1998","unstructured":"Torgersen , M. 1998 . Virtual types are statically safe . In Proceedings of the 5th Workshop on Foundations of Object-Oriented Languages (FOOL 5). Torgersen, M. 1998. Virtual types are statically safe. In Proceedings of the 5th Workshop on Foundations of Object-Oriented Languages (FOOL 5)."},{"key":"e_1_2_2_104_1","doi-asserted-by":"publisher","DOI":"10.1145\/38807.38828"},{"key":"e_1_2_2_105_1","doi-asserted-by":"publisher","DOI":"10.1145\/236338.236375"},{"key":"e_1_2_2_106_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. M. Tokoro and R. Pareschi Eds. Lecture Notes in Computer Science","volume":"821","author":"Vitek J.","unstructured":"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. 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."},{"key":"e_1_2_2_107_1","doi-asserted-by":"publisher","DOI":"10.1145\/263700.263730"},{"key":"e_1_2_2_108_1","doi-asserted-by":"crossref","unstructured":"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.   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.","DOI":"10.1016\/B978-0-444-88071-0.50014-X"},{"key":"e_1_2_2_109_1","first-page":"157","article-title":"Controversy: The case for multiple inheritance in C++","volume":"4","author":"Waldo J.","year":"1991","unstructured":"Waldo , J. 1991 . Controversy: The case for multiple inheritance in C++ . Comput. Syst. 4 , 2, 157 -- 171 . Waldo, J. 1991. Controversy: The case for multiple inheritance in C++. Comput. Syst. 4, 2, 157--171.","journal-title":"Comput. Syst."},{"key":"e_1_2_2_110_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. J. L. Knudsen Ed. Lecture Notes in Computer Science","volume":"2072","author":"Wang T.","unstructured":"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. 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."},{"key":"e_1_2_2_111_1","volume-title":"Proceedings of the Conference on Technology of Object-Oriented Languages and Systems (TOOLS 8). R. Ege et al. Eds. 192--213","author":"Weber F.","year":"1992","unstructured":"Weber , F. 1992 . Getting class correctness and system correctness equivalent&amp;#8212;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 . Weber, F. 1992. Getting class correctness and system correctness equivalent&amp;#8212;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."},{"key":"e_1_2_2_112_1","doi-asserted-by":"publisher","DOI":"10.5555\/645648.664824"},{"key":"e_1_2_2_113_1","doi-asserted-by":"publisher","DOI":"10.1145\/263700.263728"},{"key":"e_1_2_2_114_1","doi-asserted-by":"publisher","DOI":"10.1145\/583854.582434"},{"key":"e_1_2_2_115_1","doi-asserted-by":"publisher","DOI":"10.1145\/640128.604143"},{"key":"e_1_2_2_116_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. L. Cardelli Ed. Lecture Notes in Computer Science","volume":"2743","author":"Zibin Y.","unstructured":"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. 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."}],"container-title":["ACM Computing Surveys"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1922649.1922655","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1922649.1922655","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T20:26:08Z","timestamp":1750278368000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1922649.1922655"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,4]]},"references-count":114,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2011,4]]}},"alternative-id":["10.1145\/1922649.1922655"],"URL":"https:\/\/doi.org\/10.1145\/1922649.1922655","relation":{},"ISSN":["0360-0300","1557-7341"],"issn-type":[{"type":"print","value":"0360-0300"},{"type":"electronic","value":"1557-7341"}],"subject":[],"published":{"date-parts":[[2011,4]]},"assertion":[{"value":"2008-07-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-10-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2011-04-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}