ACM Home Page
Please provide us with feedback. Feedback
Practical virtual method call resolution for Java
Full text PdfPdf (324 KB)
Source Conference on Object Oriented Programming Systems Languages and Applications archive
Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications table of contents
Minneapolis, Minnesota, United States
Pages: 264 - 280  
Year of Publication: 2000
ISBN:1-58113-200-X
Also published in ...
Authors
Vijay Sundaresan  IBM Toronto and Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada H3A 2A7
Laurie Hendren  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada 3HA 2A7
Chrislain Razafimahefa  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada H3A 2A7 and University of Geneva
Raja Vallée-Rai  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada 3HA 2A7
Patrick Lam  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada 3HA 2A7 and MIT
Etienne Gagnon  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada 3HA 2A7
Charles Godin  Sable Research Group, School of Computer Science, McGill University, Montreal, Quebec, Canada 3HA 2A7
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 8,   Downloads (12 Months): 67,   Citation Count: 46
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/353171.353189
What is a DOI?

ABSTRACT

This paper addresses the problem of resolving virtual method and interface calls in Java bytecode. The main focus is on a new practical technique that can be used to analyze large applications. Our fundamental design goal was to develop a technique that can be solved with only one iteration, and thus scales linearly with the size of the program, while at the same time providing more accurate results than two popular existing linear techniques, class hierarchy analysis and rapid type analysis.We present two variations of our new technique, variable-type analysis and a coarser-grain version called declared-type analysis. Both of these analyses are inexpensive, easy to implement, and our experimental results show that they scale linearly in the size of the program.We have implemented our new analyses using the Soot frame-work, and we report on empirical results for seven benchmarks. We have used our techniques to build accurate call graphs for complete applications (including libraries) and we show that compared to a conservative call graph built using class hierarchy analysis, our new variable-type analysis can remove a significant number of nodes (methods) and call edges. Further, our results show that we can improve upon the compression obtained using rapid type analysis.We also provide dynamic measurements of monomorphic call sites, focusing on the benchmark code excluding libraries. We demonstrate that when considering only the benchmark code, both rapid type analysis and our new declared-type analysis do not add much precision over class hierarchy analysis. However, our finer-grained variable-type analysis does resolve significantly more call sites, particularly for programs with more complex uses of objects.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
URL: http://www.sable.mcgill.ca/soot/.
 
2
URL: http://www.transvirtual.com/kaffe.html.
 
3
URL: http://www.sable.mcgill.ca/sablecc/.
 
4
URL: http://wwwipd.ira.uka.de/~pizza/.
 
5
O. Agesen. Constraint-based type inference and parametric polymorphism. In B. L. Charlier, editor, SAS'94|Proceedings of the First International Static Analysis Symposium, volume 864 of Lecture Notes in Computer Science, pages 78-100. Springer, 28-30 Sep. 1994.
 
6
 
7
8
9
10
11
12
13
 
14
 
15
G. DeFouw, D. Grove, and C. Chambers. Fast interprocedural class analysis. Technical Report TR-97-07-02, University ofWashington, Department of Computer Science and Engineering, Jul. 1997.
16
17
18
19
 
20
21
 
22
23
24
25
26
 
27
G. Muller, B. Moura, F. Bellard, and C. Consel. Harissa: A exible and efficient Java environment mixing bytecode and compiled code. In Proceedings of the 3rd Conference on Object-Oriented Technologies and Systems, pages 1-20, Berkeley, Jun.16-20 1997. Usenix Association.
28
 
29
H. Pande and B. Ryder. Static type determination for C++. In USENIX Association, editor, Proceedings of the 1994 USENIX C++ Conference: April 11-14, 1994, Cambridge, MA, pages 85-97, Berkeley, CA, USA, Apr. 1994. USENIX.
30
 
31
B. G. Ryder. Constructing the call graph of a program. IEEE Transactions on Software Engineering, 5(3):216-226, May 1979.
32
 
33
 
34
V. Sundaresan. Practical techniques for virtual call resolution in Java. Master's thesis, McGill University, Montreal, Canada, Sep. 1999.
35
36
 
37

CITED BY  46

Collaborative Colleagues:
Vijay Sundaresan: colleagues
Laurie Hendren: colleagues
Chrislain Razafimahefa: colleagues
Raja Vallée-Rai: colleagues
Patrick Lam: colleagues
Etienne Gagnon: colleagues
Charles Godin: colleagues