skip to main content
article

A typed intermediate language for compiling multiple inheritance

Published:17 January 2007Publication History
Skip Abstract Section

Abstract

Type-preserving compilation can improve software reliability by generating code that can be verified independently of the compiler. Practical type preserving compilation does not exist for languages with multiple inheritance. This paper presents Emi, the first typed intermediate language to support practical compilation of a programming language with fully general multiple inheritance. The paper demonstrates the practicality of Emi by showing that Emi can be used to faithfully model standard implementation strategies of multiple inheritance for C++, the most widely-used programming language with general multiple inheritance.

References

  1. C. Chen, R. Shi, and H. Xi. A typeful approach to object-oriented programming with multiple inheritance. In Proc. 6th PADL, pages 23--38, 2004.]]Google ScholarGoogle ScholarCross RefCross Ref
  2. J. Chen. A typed intermediate language for compiling multiple inheritance. Technical Report MSR-TR-2005-98, Microsoft Corporation.]]Google ScholarGoogle Scholar
  3. J. Chen and C. Chen. A typed intermediate language for supporting multiple inheritance via interfaces. Technical Report MSR-TR-2004-141, Microsoft Corporation.]]Google ScholarGoogle Scholar
  4. J. Chen and D. Tarditi. A simple typed intermediate language for object-oriented languages. In Proc. 32nd POPL, pages 38--49, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. A. B. Compagnoni and B. C. Pierce. Higher-order intersection types and multiple inheritance. Mathematical Structures in Computer Science, 6(5):469--501, 1996.]]Google ScholarGoogle ScholarCross RefCross Ref
  6. K. Fisher, J. H. Reppy, and J. G. Riecke. A calculus for compiling and linking classes. In Proc. 9th ESOP, pages 135--149, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Gray. C++: under the hood. http://msdn.microsoft.com/archive/ default.asp? url=/archive/en-us/dnarvc/html/jangrayhood.asp.]]Google ScholarGoogle Scholar
  8. S. B. Lippman. Inside the C++ object model. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. G. Morrisett, D. Walker, K. Crary, and N. Glew. From System F to typed assembly language. ACM Trans. Prog. Lang. Syst., 21(3):527--568, May 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Rémy. Programming objects with ML-ART, an extension to ML with abstract and record types. In Proc. International Conference on Theoretical Aspects of Computer Software, pages 321--346, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. G. Rossie and D. P. Friedman. An algebraic semantics of subobjects. In Proc. OOPSLA, pages 187--199, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Z. Shao. An overview of the FLINT/ML compiler. In ACM SIGPLAN Workshop on Types in Compilation, 1997.]]Google ScholarGoogle Scholar
  13. C. A. Stone. Extensible objects without labels. ACM Trans. Prog. Lang. Syst., 26(5):805--835, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. B. Stroustrup. Multiple inheritance for C++. In Proc. of the European Unix Users Group Conference, Helsinki, 1987.]]Google ScholarGoogle Scholar
  15. D. Tarditi, G. Morrisett, P. Cheng, C. Stone, R. Harper, and P. Lee. TIL: A type-directed optimizing compiler for ML. In ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 181--192, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. D. Wasserrab, T. Nipkow, G. Snelting, and F. Tip. An operational semantics and type safety proof for multiple inheritance in C++. In Proc. OOPSLA, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A typed intermediate language for compiling multiple inheritance

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 42, Issue 1
          Proceedings of the 2007 POPL Conference
          January 2007
          379 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/1190215
          Issue’s Table of Contents
          • cover image ACM Conferences
            POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
            January 2007
            400 pages
            ISBN:1595935754
            DOI:10.1145/1190216

          Copyright © 2007 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 17 January 2007

          Check for updates

          Qualifiers

          • article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!