Symbolic Boolean manipulation with ordered binary-decision diagrams
ACM Computing Surveys (CSUR)
Zero-suppressed BDDs for set manipulation in combinatorial problems
DAC '93 Proceedings of the 30th international Design Automation Conference
Binary decision diagrams and applications for VLSI CAD
Binary decision diagrams and applications for VLSI CAD
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Sharing and groundness dependencies in logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Algorithms and Data Structures in VLSI Design
Algorithms and Data Structures in VLSI Design
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
BDDs vs. Zero-Suppressed BDDs: for CTL Symbolic Model Checking of Petri Nets
FMCAD '96 Proceedings of the First International Conference on Formal Methods in Computer-Aided Design
Proceedings of the 2002 IEEE/ACM international conference on Computer-aided design
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Symbolic pointer analysis revisited
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Precise set sharing analysis for Java-style programs
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
Magic-sets transformation for the analysis of java bytecode
SAS'07 Proceedings of the 14th international conference on Static Analysis
Hi-index | 0.00 |
Set sharing is an abstract domain in which each concrete object is represented by the set of local variables from which it might be reachable. It is a useful abstraction to detect parallelism opportunities, since it contains definite information about which variables do not share in memory, i.e., about when the memory regions reachable from those variables are disjoint. Set sharing is a more precise alternative to pair sharing, in which each domain element is a set of all pairs of local variables from which a common object may be reachable. However, the exponential complexity of some set sharing operations has limited its wider application. This work introduces an efficient implementation of the set sharing domain using Zero-supressed Binary Decision Diagrams (ZBDDs). Because ZBDDs were designed to represent sets of combinations (i.e., sets of sets), they naturally represent elements of the set sharing domain. We show how to synthesize the operations needed in the set sharing transfer functions from basic ZBDD operations. For some of the operations, we devise custom ZBDD algorithms that perform better in practice. We also compare our implementation of the abstract domain with an efficient, compact, bitset-based alternative, and show that the ZBDD version scales better in terms of both memory usage and running time.