Affiliation:
1. University of Massachusetts, Amherst, Amherst, MA, USA
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.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
65 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Object Graph Programming;Proceedings of the 46th IEEE/ACM International Conference on Software Engineering;2024-02-06
2. Flan: An Expressive and Efficient Datalog Compiler for Program Analysis;Proceedings of the ACM on Programming Languages;2024-01-05
3. On-the-Fly Static Analysis via Dynamic Bidirected Dyck Reachability;Proceedings of the ACM on Programming Languages;2024-01-05
4. Program Repair Guided by Datalog-Defined Static Analysis;Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2023-11-30
5. A Container-Usage-Pattern-Based Context Debloating Approach for Object-Sensitive Pointer Analysis;Proceedings of the ACM on Programming Languages;2023-10-16