Abstract
We present the DOOP framework for points-to analysis of Java programs. DOOP builds on the idea of specifying pointer analysis algorithms declaratively, using Datalog: a logic-based language for defining (recursive) relations. We carry the declarative approach further than past work by describing the full end-to-end analysis in Datalog and optimizing aggressively using a novel technique specifically targeting highly recursive Datalog programs.
As a result, DOOP achieves several benefits, including full order-of-magnitude improvements in runtime. We compare DOOP with Lhotak and Hendren's PADDLE, which defines the state of the art for context-sensitive analyses. For the exact same logical points-to definitions (and, consequently, identical precision) DOOP is more than 15x faster than PADDLE for a 1-call-site sensitive analysis of the DaCapo benchmarks, with lower but still substantial speedups for other important analyses. Additionally, DOOP scales to very precise analyses that are impossible with PADDLE and Whaley et al.'s bddbddb, directly addressing open problems in past literature. Finally, our implementation is modular and can be easily configured to analyses with a wide range of characteristics, largely due to its declarativeness.
- W. C. Benton and C. N. Fischer. Interactive, scalable, declarative program analysis: from prototype to implementation. In PPDP '07: Proc. of the 9th ACM SIGPLAN int. conf. on Principles and practice of declarative programming, pages 13--24, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- M. Berndl, O. Lhotak, F. Qian, L. J. Hendren, and N. Umanee. Points-to analysis using bdds. In PLDI, pages 103--114. ACM, 2003. Google Scholar
Digital Library
- M. Bravenboer and Y. Smaragdakis. Exception analysis and points-to analysis: Better together. In L. Dillon, editor, ISSTA '09: Proceedings of the 2009 International Symposium on Software Testing and Analysis, New York, NY, USA, July 2009. To appear. Google Scholar
Digital Library
- S. Dawson, C. R. Ramakrishnan, and D. S. Warren. Practical program analysis using general purpose logic programming systems--a case study. In PLDI '96: Proc. of the ACM SIGPLAN 1996 conf. on Programming language design and implementation, pages 117--126, New York, NY, USA, 1996. ACM. Google Scholar
Digital Library
- S. K. Debray. Unfold/fold transformations and loop optimization of logic programs. In PLDI '88: Proc. of the ACM SIGPLAN 1988 conf. on Programming Language design and Implementation, pages 297--307, New York, NY, USA, 1988. ACM. Google Scholar
Digital Library
- M. Eichberg, S. Kloppenburg, K. Klose, and M. Mezini. Defining and continuous checking of structural program dependencies. In ICSE '08: Proc. of the 30th int. conf. on Software engineering, pages 391--400, New York, NY, USA, 2008. ACM Google Scholar
Digital Library
- S. J. Fink. T.J. Watson libraries for analysis (WALA). http://wala.sourceforge.net.Google Scholar
- A. Gupta, I. S. Mumick, and V. S. Subrahmanian. Maintaining views incrementally. In SIGMOD '93: Proc. of the 1993 ACM SIGMOD int. conf. on Management of data, pages 157--166, New York, NY, USA, 1993. ACM. Google Scholar
Digital Library
- E. Hajiyev, M. Verbaere, and O. de Moor. Codequest: Scalable source code queries with datalog. In Proc. European Conf. on Object-Oriented Programming (ECOOP), pages 2--27. Spinger, 2006. Google Scholar
Digital Library
- B. Hardekopf and C. Lin. The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code. In PLDI'07: Proc. ACM SIGPLAN conf. on Programming Language Design and Implementation, pages 290--299, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- B. Hardekopf and C. Lin. Semi-sparse flow-sensitive pointer analysis. In POPL '09: Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 226--238, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
- N. Heintze and O. Tardieu. Demand-driven pointer analysis. In PLDI '01: Proc. of the ACM SIGPLAN 2001 conf. on Programming language design and implementation, pages 24--34, New York, NY, USA, 2001. ACM. Google Scholar
Digital Library
- M. S. Lam, J. Whaley, V. B. Livshits, M. C. Martin, D. Avots, M. Carbin, and C. Unkel. Context-sensitive program analysis as database queries. In PODS '05: Proc. of the twenty-fourth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems, pages 1--12, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- C. Lattner, A. Lenharth, and V. Adve. Making context-sensitive points-to analysis with heap cloning practical for the real world. SIGPLAN Not., 42(6):278--289, 2007. Google Scholar
Digital Library
- O. Lhotak. Program Analysis using Binary Decision Diagrams. PhD thesis, McGill University, Jan. 2006. Google Scholar
Digital Library
- O. Lhotak and L. Hendren. Scaling Java points-to analysis using Spark. In G. Hedin, editor, Compiler Construction, 12th Int. Conf., volume 2622 of LNCS, pages 153--169, Warsaw, Poland, April 2003. Springer. Google Scholar
Digital Library
- O. Lhotak and L. Hendren. Jedd: a bdd-based relational extension of java. In PLDI '04: Proc. of the ACM SIGPLAN 2004 conf. on Programming language design and implementation, pages 158--169, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- O. Lhotak and L. Hendren. Evaluating the benefits of context-sensitive points-to analysis using a BDD-based implementation. ACM Trans. Softw. Eng. Methodol., 18(1):1--53, 2008. Google Scholar
Digital Library
- B. Livshits, J. Whaley, and M. S. Lam. Reflection analysis for Java. In K. Yi, editor, Proceedings of the 3rd Asian Symposium on Programming Languages and Systems, volume 3780. Springer-Verlag, Nov. 2005. Google Scholar
Digital Library
- A. Milanova, A. Rountev, and B. G. Ryder. Parameterized object sensitivity for points-to analysis for java. ACM Trans. Softw. Eng. Methodol., 14(1):1--41, 2005. Google Scholar
Digital Library
- M. Naik, A. Aiken, and J. Whaley. Effective static race detection for java. In Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'06), pages 308--319, 2006. Google Scholar
Digital Library
- E. M. Nystrom, H.-S. Kim, and W. mei W. Hwu. Importance of heap specialization in pointer analysis. In PASTE '04: Proc. of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pages 43--48, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- T. Reps. Demand interprocedural program analysis using logic databases. In R. Ramakrishnan, editor, Applications of Logic Databases, pages 163--196. Kluwer Academic Publishers, 1994.Google Scholar
- T. W. Reps. Solving demand versions of interprocedural analysis problems. In CC '94: Proc. of the 5th Int. Conf. on Compiler Construction, pages 389--403, London, UK, 1994. Springer-Verlag. Google Scholar
Digital Library
- D. Saha and C. R. Ramakrishnan. Incremental and demand-driven points-to analysis using logic programming. In PPDP '05: Proc. of the 7th ACM SIGPLAN int. conf. on Principles and practice of declarative programming, pages 117--128, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- M. Sridharan and R. Bodik. Refinement-based context-sensitive points-to analysis for java. In PLDI '06: Proc. of the 2006 ACM SIGPLAN conf. on Programming language design and implementation, pages 387--400, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- M. Sridharan, D. Gopan, L. Shan, and R. Bodć1k. Demand-driven points-to analysis for java. In OOPSLA '05: Proc. of the 20th annual ACM SIGPLAN conf. on Object oriented programming, systems, languages, and applications, pages 59--76, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- J. Whaley, D. Avots, M. Carbin, and M. S. Lam. Using datalog with binary decision diagrams for program analysis. In K. Yi, editor, APLAS, volume 3780 of Lecture Notes in Computer Science, pages 97--118. Springer, 2005. Google Scholar
Digital Library
- J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI '04: Proc. of the ACM SIGPLAN 2004 conf. on Programming language design and implementation, pages 131--144, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- G. Xu and A. Rountev. Merging equivalent contexts for scalable heap-cloning-based context-sensitive points-to analysis. In ISSTA '08: Proc. of the 2008 int. symposium on Software testing and analysis, pages 225--236, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- X. Zheng and R. Rugina. Demand-driven alias analysis for c. In POPL '08: Proc. of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 197--208, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
Index Terms
Strictly declarative specification of sophisticated points-to analyses
Recommendations
Strictly declarative specification of sophisticated points-to analyses
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applicationsWe present the DOOP framework for points-to analysis of Java programs. DOOP builds on the idea of specifying pointer analysis algorithms declaratively, using Datalog: a logic-based language for defining (recursive) relations. We carry the declarative ...
Parameterized object sensitivity for points-to analysis for Java
The goal of points-to analysis for Java is to determine the set of objects pointed to by a reference variable or a reference object field. We present object sensitivity, a new form of context sensitivity for flow-insensitive points-to analysis for Java. ...
On-demand dynamic summary-based points-to analysis
CGO '12: Proceedings of the Tenth International Symposium on Code Generation and OptimizationStatic analyses can be typically accelerated by reducing redundancies. Modern demand-driven points-to or alias analysis techniques rest on the foundation of Context-Free Language (CFL) reachability. These techniques achieve high precision efficiently ...






Comments