Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/645394.651922guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

A Calculus for Compiling and Linking Classes

Published: 02 April 2000 Publication History
  • Get Citation Alerts
  • Abstract

    We describe λinkζ (pronounced "links"), a low-level calculus designed to serve as the basis for an intermediate representation in compilers for class-based object-oriented languages. The primitives in λinkζ can express a wide range of class-based object-oriented language features, including various forms of inheritance, method override, and method dispatch. In particular, λinkζ can model the object-oriented features of MOBY, OCAML, and LOOM, where subclasses may be derived from unknown base classes. λinkζ can also serve as the intermediate representation for more conventional class mechanisms, such as JAVA's. In this paper, we formally describe λinkζ, give examples of its use, and discuss how standard compiler transformations can be used to optimize programs in the λinkζ representation.

    References

    [1]
    Abadi, M. and L. Cardelli. A Theory of Objects. Springer-Verlag, New York, NY, 1996.
    [2]
    Arnold, K. and J. Gosling. The Java Programming Language. Addison-Wesley, Reading, MA, 2nd edition, 1998.
    [3]
    Appel, A.W. and D. B. MacQueen. A Standard ML compiler. In FPCA'87, vol. 274 of LNCS, NewYork, NY, September 1987. Springer-Verlag, pp. 301-324.
    [4]
    Appel, A.W. Compiling with Continuations. Cambridge University Press, Cambridge, England, 1992.
    [5]
    Ancona, D. and E. Zucca. A primitive calculus for module systems. In PPDP'99, LNCS. Springer-Verlag, September 1999, pp. 62-79.
    [6]
    Barendregt, H. P. The Lambda Calculus, vol. 103 of Studies in Logic and the Foundations of Mathematics. North-Holland, revised edition, 1984.
    [7]
    Bruce, K. B., A. Fiech, and L. Petersen. Subtyping is not a good "match" for objectoriented languages. In ECOOP'97, vol. 1241 of LNCS,NewYork,NY, 1997. Springer-Verlag, pp. 104-127.
    [8]
    Bono, V., A. Patel, and V. Shmatikov. A core calculus of classes and mixins. In ECOOP'99, vol. 1628 of LNCS, NewYork, NY, June 1999. Springer-Verlag.
    [9]
    Cardelli, L. Program fragments, linking, and modularization. In POPL'97, January 1997, pp. 266-277.
    [10]
    Chambers, C. and W. Chen. Efficient predicate dispatching. Technical report, Department of Computer Science, University ofWashington, 1998.
    [11]
    Dean, J., G. DeFouw, D. Grove, V. Litvinov, and C. Chambers. Vortex: An optimizing compiler for object-oriented languages. In OOPSLA'96, October 1995, pp. 83-100.
    [12]
    Drossopoulou, S., S. Eisenbach, and D. Wragg. A fragment calculus -- towards a model of separate compilation, linking and binary compatibility. In LICS-14, June 1999, pp. 147-156.
    [13]
    Dean, J., D. Grove, and C. Chambers. Optimization of object-oriented programs using static class hierarchy analysis. In ECOOP'95, August 1995.
    [14]
    Driesen, K. and U. Hölzle. Minimizing row displacement dispatch tables. In OOPSLA'95, October 1995, pp. 141-155.
    [15]
    Deutsch, L. P. and A. M. Schiffman. Efficient implementation of the Smalltalk-80 system. In POPL'84, January 1984, pp. 297-302.
    [16]
    Felleisen, M. and D. P. Friedman. Control operators, the SECD-machine, and the λ-calculus. In M. Wirsing (ed.), Formal Description of Programming Concepts - III, pp. 193-219. North-Holland, NewYork, N.Y., 1986.
    [17]
    Flatt, M. and M. Felleisen. Units: Cool modules for HOT languages. In PLDI'98, June 1998, pp. 236-248.
    [18]
    Flatt, M., S. Krishnamurthi, and M. Felleisen. Classes and mixins. In POPL'98, January 1998, pp. 171-183.
    [19]
    Fisher, K. and J. Reppy. The design of a class mechanism for Moby. In PLDI'99, May 1999, pp. 37-49.
    [20]
    Fisher, K. and J. Reppy. Foundations for MOBY classes. Technical Memorandum, Bell Labs, Lucent Technologies, Murray Hill, NJ, February 1999.
    [21]
    Flanagan, C., A. Sabry, B. F. Duba, and M. Felleisen. The essence of compiling with continuations. In PLDI'93, June 1993, pp. 237-247.
    [22]
    Grove, D., J. Dean, C. Garrett, and C. Chambers. Profile-guided receiver class prediction. In OOPSLA'95, October 1995, pp. 108-123.
    [23]
    Girard, J.-Y., Y. Lafont, and P. Taylor. Proofs and Types. Cambridge University Press, Cambridge, England, 1989.
    [24]
    Glew, N. and G. Morrisett. Type-safe linking and modular assembly language. In POPL'99, January 1999, pp. 250-261.
    [25]
    Leroy, X. The Objective Caml System (release 2.00), August 1998. Available from http://pauillac.inria.fr/caml.
    [26]
    League, C., Z. Shao, and V. Trifonov. Representing Java classes in a typed intermediate language. In ICFP'99, September 1999, pp. 183-196.
    [27]
    Oliva, D. P. and A. P. Tolmach. From ML to Ada: Strongly-typed language interoperability via source translation. JFP, 8(4), July 1998, pp. 367-412.
    [28]
    Ramsey, N. Relocating machine instructions by currying. In PLDI'96, May 1996, pp. 226-236.
    [29]
    RÉmy, D. Efficient representation of extensible records. In ML'92 Workshop, San Francisco, USA, June 1992. pp. 12-16.
    [30]
    Riecke, J. G. and C. Stone. Privacy via subsumption. In FOOL5, January 1998. A longer version will appear in Information and Computation.
    [31]
    RÉmy, D. and J. Vouillon. Objective ML: An effective object-oriented extension to ML. TAPOS, 4, 1998, pp. 27-50.
    [32]
    Stroustrup, B. The Design and Evolution of C++. Addison-Wesley, Reading, MA, 1994.
    [33]
    Stroustrup, B. The C++ Programming Language. Addison-Wesley, Reading, MA, 3rd edition, 1997.
    [34]
    Tarditi, D. Design and implementation of code optimizations for a type-directed compiler for Standard ML. Ph.D. dissertation, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, December 1996. Available as Technical Report CMU-CS-97-108.
    [35]
    Vanderwaart, J. C. Typed intermediate representations for compiling object-oriented languages, May 1999. Williams College Senior Honors Thesis.

    Cited By

    View all
    • (2010)Singleton types here, singleton types there, singleton types everywhereProceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification10.1145/1707790.1707792(1-8)Online publication date: 19-Jan-2010
    • (2007)A typed intermediate language for compiling multiple inheritanceProceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/1190216.1190222(25-30)Online publication date: 17-Jan-2007
    • (2007)A typed intermediate language for compiling multiple inheritanceACM SIGPLAN Notices10.1145/1190215.119022242:1(25-30)Online publication date: 17-Jan-2007
    • Show More Cited By

    Index Terms

    1. A Calculus for Compiling and Linking Classes
        Index terms have been assigned to the content through auto-classification.

        Recommendations

        Comments

        Information & Contributors

        Information

        Published In

        cover image Guide Proceedings
        ESOP '00: Proceedings of the 9th European Symposium on Programming Languages and Systems
        April 2000
        428 pages
        ISBN:3540672621

        Publisher

        Springer-Verlag

        Berlin, Heidelberg

        Publication History

        Published: 02 April 2000

        Qualifiers

        • Article

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)0
        • Downloads (Last 6 weeks)0
        Reflects downloads up to 11 Aug 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2010)Singleton types here, singleton types there, singleton types everywhereProceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification10.1145/1707790.1707792(1-8)Online publication date: 19-Jan-2010
        • (2007)A typed intermediate language for compiling multiple inheritanceProceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/1190216.1190222(25-30)Online publication date: 17-Jan-2007
        • (2007)A typed intermediate language for compiling multiple inheritanceACM SIGPLAN Notices10.1145/1190215.119022242:1(25-30)Online publication date: 17-Jan-2007
        • (2005)A simple typed intermediate language for object-oriented languagesACM SIGPLAN Notices10.1145/1047659.104030940:1(38-49)Online publication date: 12-Jan-2005
        • (2005)A simple typed intermediate language for object-oriented languagesProceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages10.1145/1040305.1040309(38-49)Online publication date: 12-Jan-2005
        • (2005)Typed compilation against non-manifest base classesProceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices10.1007/11741060_5(77-98)Online publication date: 8-Mar-2005
        • (2004)Extensible objects without labelsACM Transactions on Programming Languages and Systems10.1145/1018203.101820626:5(805-835)Online publication date: 1-Sep-2004
        • (2003)Flexible models for dynamic linkingProceedings of the 12th European conference on Programming10.5555/1765712.1765718(38-53)Online publication date: 7-Apr-2003
        • (2003)Diagrams for meaning preservationProceedings of the 14th international conference on Rewriting techniques and applications10.5555/1759148.1759157(88-106)Online publication date: 9-Jun-2003

        View Options

        View options

        Get Access

        Login options

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media