ACM Home Page
Please provide us with feedback. Feedback
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Full text PdfPdf (278 KB)
Source Conference on Programming Language Design and Implementation archive
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation table of contents
Washington DC, USA
SESSION: Pointer analysis and BDDs table of contents
Pages: 131 - 144  
Year of Publication: 2004
ISBN:1-58113-807-5
Also published in ...
Authors
John Whaley  Stanford University, Stanford, CA
Monica S. Lam  Stanford University, Stanford, CA
Sponsors
ACM: Association for Computing Machinery
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 8,   Downloads (12 Months): 128,   Citation Count: 68
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/996841.996859
What is a DOI?

ABSTRACT

This paper presents the first scalable context-sensitive, inclusion-based pointer alias analysis for Java programs. Our approach to context sensitivity is to create a clone of a method for every context of interest, and run a context-insensitive algorithm over the expanded call graph to get context-sensitive results. For precision, we generate a clone for every acyclic path through a program's call graph, treating methods in a strongly connected component as a single node. Normally, this formulation is hopelessly intractable as a call graph often has 10 14 acyclic paths or more. We show that these exponential relations can be computed efficiently using binary decision diagrams (BDDs). Key to the scalability of the technique is a context numbering scheme that exposes the commonalities across contexts. We applied our algorithm to the most popular applications available on Sourceforge, and found that the largest programs, with hundreds of thousands of Java bytecodes, can be analyzed in under 20 minutes.This paper shows that pointer analysis, and many other queries and algorithms, can be described succinctly and declaratively using Datalog, a logic programming language. We have developed a system called bddbddb that automatically translates Datalog programs into highly efficient BDD implementations. We used this approach to develop a variety of context-sensitive algorithms including side effect analysis, type analysis, and escape analysis.


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
 
2
3
 
4
 
5
 
6
 
7
A. Chandra and D. Harel. Horn clauses and generalizations. Journal of Logic Programming, 2(1):1--15, 1985.
8
 
9
10
 
11
12
 
13
14
15
 
16
17
18
 
19
O. Lhoták and L. Hendren. Scaling Java points-to analysis using Spark. In Proceedings of the 12th International Conference on Compiler Construction, pages 153--169, April 2003.
20
 
21
J. Lind-Nielsen. BuDDy, a binary decision diagram package. http://www.itu.dk/research/buddy/.
 
22
 
23
24
 
25
T. W. Reps. Demand Interprocedural Program Analysis Using Logic Databases, pages 163--196. Kluwer, 1994.
 
26
 
27
F. Somenzi. CUDD: CU decision diagram package release, 1998.
28
 
29
Java cryptography extension (JCE). http://java.sun.com/products/jce, 2003.
 
30
 
31
J. Whaley. JavaBDD library. http://javabdd.sourceforge.net.
32
 
33
34
 
35
J. Whaley, C. Unkel, and M. S. Lam. A BDD-based deductive database for program analysis. http://suif.stanford.edu/bddbddb, 2004.
 
36
37
 
38
39
40

CITED BY  68

Collaborative Colleagues:
John Whaley: colleagues
Monica S. Lam: colleagues