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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- O. Lhotak. Program Analysis using Binary Decision Diagrams. PhD thesis, McGill University, Jan. 2006. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ...
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 ...
Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimization
PASTE '01: Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineeringIn this paper, we compare the behavior of pointers in C programs, as approximated by static pointer analysis algorithms, with the actual behavior of pointers when these programs are run. In order to perform this comparison, we have implemented several ...
Comments