Object Graph Analysis

André Spiegel
Institut für Informatik
Freie Universität Berlin
Takustr. 9, D-14195 Berlin
email: spiegel@inf.fu-berlin.de

Report B 99-11
July 1999

The run-time structure of an object-oriented program can be represented by an object graph. Approximating this graph statically is a prerequisite for higher level analyses such as concurrency analysis and distribution analysis; it is also helpful in contexts of software maintenance and re-engineering. However, most existing techniques for static analysis of object-oriented programs are not adequate for deriving general object graphs from the source code. We have therefore developed a new algorithm that is capable of doing so. The algorithm is defined for the Java language, of which it covers all language features except class loader interactions and run-time reflection. It is flow-insensitive but context-sensitive, and therefore has a low computational complexity. This paper describes the algorithm and presents results that our implementation obtained for several non-trivial example programs of considerable size.

Get the report here or by anonymous ftp:
Server: ftp.inf.fu-berlin.de
File:   pub/reports/tr-b-99-10.ps.gz