Re: [Question] Code Generation of OOP languages

anton@mips.complang.tuwien.ac.at (Anton Ertl)
7 Dec 1999 00:35:12 -0500

          From comp.compilers

Related articles
[Question] Code Generation of OOP languages baby@adam.kaist.ac.kr (S.R.SEO) (1999-12-01)
Re: [Question] Code Generation of OOP languages hoeppner@ipd.uni-karlsruhe.de (hoeppner) (1999-12-03)
Re: [Question] Code Generation of OOP languages anton@mips.complang.tuwien.ac.at (1999-12-07)
Re: [Question] Code Generation of OOP languages ghoul@ibm.net (Mark van Gulik) (1999-12-20)
| List of all articles for this month |

From: anton@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.compilers
Date: 7 Dec 1999 00:35:12 -0500
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
References: 99-12-007
Keywords: OOP, code, bibliography

  "S.R.SEO" <baby@adam.kaist.ac.kr> writes:
>How do OOP languages ,such as C++ & JAVA, translate
>source code - with OO concept - into
>binary or intermediate(like assembly) code - without OO concept ?
>
>Any useful references(book or website) about this topic?


Here's the reading list for a seminar we had on this topic last year:


Object layout and method dispatch:


Section 2.9 and 3.5 of
@Book{stroustroup94,
    author = {Bjarne Stroustroup},
    title = {The Design and Evolution of {C++}},
    publisher = {Addison-Wesley},
    year = {1994},
    annote = {An extended version of \cite{stroustroup93}.
                                    Discusses the design philosophy of C++ and the
                                    specific design issues in detail.}
}


Dispatch for Java interfaces:


@INPROCEEDINGS{krall&grafl97,
AUTHOR = {Andreas Krall and Reinhard Grafl},
TITLE = {{CACAO} -- A 64 bit {JavaVM} Just-in-Time Compiler},
BOOKTITLE = {PPoPP'97 Workshop on Java for Science and Engineering Computation},
EDITOR = {Geoffrey C.~Fox and Wei Li},
ORGANIZATION= {ACM},
MONTH = {June},
ADDRESS = {Las Vegas},
note = {http://www.complang.tuwien.ac.at/\linebreak[0]andi/javaws.ps.gz},
YEAR = 1997
}


Multiple Inheritance:


Chapter 10 of


@Book{ellis&stroustrup92,
    author = "Margaret A. Ellis and Bjarne Stroustrup",
    title = "The Annotated {C}++ Reference Manual",
    publisher = "Addison-Wesley",
    address = "Reading",
    year = "1992",
    descriptor = "C++, Reference Manual",
}


Dispatch and computer architecture:


@InProceedings{driesen&hoelzle96,
    author = "Karel Driesen and Urs H{\"o}lzle",
    title = "The Direct Cost of Virtual Function Calls in {C++}",
    crossref = "oopsla96",
    pages = "306--323"
}


Dispatch for PLs with dynamic class hierarchies:


@InProceedings{vitek&horspool96,
    author = {Jan Vitek and R. Nigel Horspool},
    title = {Compact Dispatch Tables for Dynamically Typed Object
                                    Oriented Languages},
    crossref = {cc96},
    pages = {309--325}
}


Multi-methods:


@Article{amiel+94,
    author = "E. Amiel and O. Gruber and E. Simon",
    title = "Optimizing Multi-Method Dispatch Using Compressed
                                  Dispatch Tables",
    journal = "ACM SIG{\-}PLAN Notices",
    volume = "29",
    number = "10",
    pages = "244--244",
    month = oct,
    year = "1994",
    coden = "SINODQ",
    ISSN = "0362-1340",
    bibdate = "Fri Apr 24 18:36:02 MDT 1998",
    acknowledgement = ack-nhfb,
    classification = "C4240 (Programming and algorithm theory); C6110J
                                  (Object-oriented programming); C6140D (High level
                                  languages)",
    conflocation = "Portland, OR, USA; 23-27 Oct. 1994",
    conftitle = "Ninth Annual Conference on Object-Oriented Programming
                                  Systems, Languages, and Applications. OOPSLA '94",
    corpsource = "INRIA, Le Chesnay, France",
    keywords = "C++; coloring; compressed dispatch tables; constant
                                  time performance; mono-methods; multi-method dispatch;
                                  object oriented programming object oriented
                                  programming; object-oriented language; object-oriented
                                  languages; object-oriented programming; optimisation;
                                  optimization; programming theory; signature analysis",
    sponsororg = "ACM",
    treatment = "P Practical; T Theoretical or Mathematical",
}


Determination of the called class by static analysis:


@InProceedings{diwan+96,
    author = "Amer Diwan and J. Eliot B. Moss and Kathryn S. McKinley",
    title = "Simple and Effective Analysis of Statically-Typed
Object-Oriented Programs",
    crossref = "oopsla96",
    pages = "292--305"
}


Static analysis vs. dynamic optimization:


@Inproceedings{agesen&hoelzle95,
    author = "Ole Agesen and Urs Hoelzle",
    title = "Type Feedback vs. Concrete Type Analysis: {A}
                                  Comparison of Optimization Techniques for
                                  Object-Oriented Languages",
    booktitle = "OOPSLA '95",
    year = "1995",
    abstract-url = "http://http.cs.ucsb.edu/~urs/tf-vs-ti.html",
    url = "http://http.cs.ucsb.edu/~urs/tf-vs-ti.ps.Z"
}


Optimizing dispatch by specialization:


@Article{chambers&ungar90,
    author = "Craig Chambers and David Ungar",
    journal = "SIGPLAN Notices",
    title = "Iterative Type Analysis and Extended Message
                                  Splitting: Optimizing Dynamically-Typed Object-Oriented
                                  Programs",
    year = "1990",
    abstract-url = "http://self.stanford.edu/papers/iterative-type-analysis.html",
    url = "ftp://self.stanford.edu/pub/papers/sigplan90.ps.Z",
    month = jun,
    number = "6",
    volume = "25",
}


Dispatch by binary search:


@InProceedings{zendra+97,
    author = "Olivier Zendra and Dominique Colnet and Suzanne Collin",
    title = "Efficient Dynamic Dispatch without Virtual Function
Tables. The SmallEiffel Compiler.",
    crossref = "oopsla97",
    pages = "125--141"
}


Adaptive Optimization:


@InProceedings{hoelzle&ungar94,
    author = "Urs Hoelzle and David Ungar",
    booktitle = "ACM SIGPLAN `94 Conference on Programming Language
                                  Design and Implementation",
    title = "Optimizing Dynamically-Dispatched Calls with Run-Time
                                  Type Feedback",
    year = "1994",
    abstract-url = "http://http.cs.ucsb.edu/~urs/type-feedback.html",
    address = "Orlando, FL",
    url = "ftp://self.stanford.edu/pub/papers/pldi94.ps.Z",
    keywords = "Object-oriented, SELF",
    month = jun,
    scope = "opt",
}


Exception handling:


@TechReport{hof+97,
    type = "Technical Report",
    number = "CS-SSW-P97-07",
    institution = "Johannes Kepler University Linz, Austria",
    title = "Zero-Overhead Exception Handling Using
                                  Metaprogramming",
    month = jul # " 1,",
    year = "1997",
    bibdate = "September 1, 1997",
    url = "ftp://ftp.ssw.uni-linz.ac.at/pub/Reports/CS-SSW-P97-07.ps.Z",
    note = "ftp://ftp.ssw.uni-linz.ac.at/pub/Reports/CS-SSW-P97-07.ps.Z",
    author = "M. Hof and H. {M\"ossenb\"ock} and P. Pirkelbauer"
}


Type inclusion tests (RTTI):


@InProceedings{vitek+97,
    author = "Jan Vitek and R. Nigel Horspool and Andreas Krall",
    title = "Efficient Type Inclusion Tests",
    crossref = "oopsla97",
    pages = "142--157",
    annote = ""
}


Parametric Polymorphism:


@InProceedings{roe&szyperski97,
    author = "Paul Roe and Clemens Szyperski",
    title = "Lightweight Parametric Polymorphism for Oberon",
    booktitle = "Proc. of Joint Modular Languages Conference (JMLC)",
    year = "1997",
    month = mar,
    address = "Linz, Austria",
    url = "http://www.fit.qut.edu.au/~szypersk/pub/JMLC97.ps.gz"
}


Organization of the compiler:


@InProceedings{dean+96,
    author = "Jeffrey Dean and Greg DeFouw and David Grove and
Vassily Litvinov and Craig Chambers",
    title = "Vortex: An Optimizing Compiler for Object-Oriented
Languages",
    crossref = "oopsla96",
    pages = "83--100"
}


Referenced Proceedings:


@Proceedings{oopsla96,
    title = "Conference on Object-Oriented Programming Systems,
Languages \& Applications (OOPSLA '96)",
    booktitle = "Conference on Object-Oriented Programming Systems,
Languages \& Applications (OOPSLA '96)",
    year = "1996",
    key = "OOPSLA '96",
}
@Proceedings{cc96,
    title = "Compiler Construction (CC'96)",
    booktitle = "Compiler Construction (CC'96)",
    year = "1996",
    key = "CC'96",
    editor = "Tibor Gyim\'{o}thy",
    OPTvolume = "1060",
    OPTseries = "LNCS",
    publisher = "Springer LNCS~1060",
    address = "Link{\"o}ping"
}
@Proceedings{oopsla97,
    title = "Conference on Object-Oriented Programming Systems,
Languages \& Applications (OOPSLA '97)",
    booktitle = "Conference on Object-Oriented Programming Systems,
Languages \& Applications (OOPSLA '97)",
    year = "1997",
    key = "OOPSLA '97",
}


- anton
--
M. Anton Ertl Some things have to be seen to be believed
anton@mips.complang.tuwien.ac.at Most things have to be believed to be seen
http://www.complang.tuwien.ac.at/anton/home.html


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.