Compile-Time Analysis of Object-Oriented Programs

  title={Compile-Time Analysis of Object-Oriented Programs},
  author={Jan Vitek and R. Nigel Horspool and James S. Uhl},
Generation of efficient code for object-oriented programs requires knowledge of object lifetimes and method bindings. For object-oriented languages that have automatic storage management and dynamic look-up of methods, the compiler must obtain such knowledge by performing static analysis of the source code. We present an analysis algorithm which discovers the potential classes of each object in an object-oriented program as well as a safe approximation of their lifetimes. These results are… 
Static Type Determination for C ++3
It is shown that the problem of precise interprocedural type determination is NP-hard in the presence of inheritance, virtual methods and pointers, and the importance of type determination in improving codeiency and precision is highlighted.
Static Type Determination for C++
It is shown that the problem of precise interprocedural type determination is NP-hard in the presence of inheritance, virtual methods and pointers, and the significance of type determination in improving code efficiency and precision is highlighted.
SOLAT-a Simple Object-Oriented Language Analyzing Tool
  • Wolfgang GolubskiB. Pohlers
  • Computer Science
    Proceedings of TOOLS USA 97. International Conference on Technology of Object Oriented Systems and Languages
  • 1997
SOLAT (Simple Object-Oriented Language Analyzing Tool) provides a graphical interface to manage the results obtained by type analysis and can therefore be successfully used as an annotation or debugging tool during program development.
A comparison of algorithms for interprocedural class analysis
This paper develops a general model for describing interprocedural class analysis algorithms, presents several previously developed algorithms using this model, and empirically assess the algorithms by applying them to a suite of Cecil applications.
Principles of Program Analysis
This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems.
Dynamic versus Static Optimization Techniques for Object-Oriented Languages
This work directly compares the effectiveness of type feedback and concrete type inference on a suite of 23 SELF programs, showing that both systems inline >95% of all sends and deliver similar overall performance with one exception.
Fast and effective optimization of statically typed object-oriented languages
In this dissertation, we show how a relatively simple and extremely fast interprocedural optimization algorithm can be used to optimize many of the expensive features of statically typed,
Taming Message Passing: Efficient Method Look-Up for Dynamically Typed Languages
This work presents a fast technique for generating compact selector-indexed dispatch tables and speeds up messages to within 10% of the speed of a statically typed language such as C++.
Analysing and Optimizing Strongly Typed Object-oriented Languages: A Generic Approach and its Application to Oberon-2
This work shows how to enhance the framework of abstract interpretation to the object oriented setting considering an Oberon like language for illustration and arrives at a generic framework whose generality and exibility is demonstrated.
Message Dispatch on Pipelined Processors
It is shown that adding support for dynamic typing or multiple inheritance does not significantly impact dispatch speed for most techniques, especially on superscalar machines, so that minimal table size may not imply minimal run-time space usage.


The interprocedural analysis and automatic parallelization of Scheme programs
This paper develops a system of interprocedural analysis, using abstract interpretation, that is used in the dependence analysis and memory management of Scheme programs, and introduces the transformations of exit-loop translation and recursions splitting to treat the control structures of iteration and recursion that arise commonly in Scheme programs.
A semantic model of reference counting and its abstraction (detailed summary)
Most interpreters for functional languages (as well as Lisp) employ at some level in the implementation a notion of sharing, whether manifested indirectly through an environment or directly via
Inferring types in Smalltalk
It is concluded that Smalltalk needs to introduce "types" to Smalltalk, and the introduction of types is more promising in Smalltalk than in similarly declarationless language Lisp, since Smalltalk has a rich user-defined abstract classes.
Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints
A program denotes computations in some universe of objects. Abstract interpretation of programs consists in using that denotation to describe computations in another universe of abstract objects, so
Smalltalk-80: The Language and Its Implementation
This book is the first detailed account of the Smalltalk-80 system and is divided into four major parts: an overview of the concepts and syntax of the programming language, a specification of the system's functionality, and an example of the design and implementation of a moderate-size application.
Compilers: Principles, Techniques, and Tools
  • A. AhoR. SethiJ. Ullman
  • Computer Science
    Addison-Wesley series in computer science / World student series edition
  • 1986
This book discusses the design of a Code Generator, the role of the Lexical Analyzer, and other topics related to code generation and optimization.
Abstract hkrprdation: A Unified Lattice Modd for Static Analysis of Program by Construction OT Approximation of Fixpoints
  • Conf. Rec. of the 4th ACM Synp. on Principla of Programming Languages
  • 1977
Anal* of Pointers and Structures. Ia SI&PLAN'SO Con$ on pr&rnming Language D+e%lgn-amd hnpiementation
  • Anal* of Pointers and Structures. Ia SI&PLAN'SO Con$ on pr&rnming Language D+e%lgn-amd hnpiementation
  • 1990
Two Approaches to Interprkedural Data Flow Analysis
  • Progrum Flow Analgais
  • 1981