Call graph construction in object-oriented languages
- 9 October 1997
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 32 (10) , 108-124
- https://doi.org/10.1145/263700.264352
Abstract
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedural analysis to programs written in object-oriented or functional languages is complicated by the difficulty of constructing an accurate program call graph. This paper presents a parameterized algorithmic framework for call graph construction in the presence of message sends and/or first class functions. We use this framework to describe and to implement a number of well-known and new algorithms. We then empirically assess these algorithms by applying them to a suite of medium-sized programs written in Cecil and Java, reporting on the relative cost of the analyses, the relative precision of the constructed call graphs, and the impact of this precision on the effectiveness of a number of interprocedural optimizations.Keywords
This publication has 29 references indexed in Scilit:
- Procedure cloningPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Fast static analysis of C++ virtual function callsPublished by Association for Computing Machinery (ACM) ,1996
- VortexPublished by Association for Computing Machinery (ACM) ,1996
- Simple and effective analysis of statically-typed object-oriented programsPublished by Association for Computing Machinery (ACM) ,1996
- StrongtalkPublished by Association for Computing Machinery (ACM) ,1993
- Constructing the procedure call multigraphIEEE Transactions on Software Engineering, 1990
- Interactive type analysis and extended message splitting; optimizing dynamically-typed object-oriented programsPublished by Association for Computing Machinery (ACM) ,1990
- Customization: optimizing compiler technology for SELF, a dynamically-typed object-oriented programming languagePublished by Association for Computing Machinery (ACM) ,1989
- Efficient implementation of the smalltalk-80 systemPublished by Association for Computing Machinery (ACM) ,1984
- Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpointsPublished by Association for Computing Machinery (ACM) ,1977