Abstract

A number of Call Graph construction algorithms have been designed for construction of Call Graphs for object-oriented languages. Each of the Call Graph contraction algorithms were proposed to keep in mind the improvements over previous Call Graphs in terms of precision, cost and accuracy. In object oriented languages the Call Graphs are generally contracted to represent the calling relationship between the program's methods. The Call Graph forms the bases for deducing the information about the classes and the methods that are actually invoked, this information can be used to find call sites were virtual function calls can be replaced by direct calls and inline-expansions can be put into work where ever possible. In this paper we present an empirical comparison of various well known Call Graph construction algorithms. Here we used Scoot bytecode reader as front-end to implement various Call Graph construction algorisms. In the processes Scoot bytecode reader is used to read the bytecode of a specific java program then the reachable methods are found for each invoked method. For storing information about the classes, methods, fields and statements we created our own set of data structures. Finally we tested and evaluated the developed algorithms with a variety of java benchmark programs to gather the information for the comparison of various Call Graph algorithms which is the goal of this work. We have included most of the Call Graph algorithms of popularity in this work. The main aim of the work is to consider all the dimensions of the Call Graph construction algorithms like cost, precision, memory and time requirements for its construction. The previous works has either not included all the algorithms of fame or have left some of their construction constraints untouched. This work will bring an effective empirical comparison to the front and will help to reveal that which Call Graph construction algorithm is best and when. The results in the work are mainly considered valid for java and other statically typed object-oriented languages.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call