Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Object-oriented type inference
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Solving shape-analysis problems in languages with destructive updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using shape analysis to reduce finite-state models of concurrent Java programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Points-to analysis for Java using annotated constraints
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Java Virtual Machine Specification
Java Virtual Machine Specification
Verifying reachability invariants of linked structures
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Shape Analysis through Predicate Abstraction and Model Checking
VMCAI 2003 Proceedings of the 4th International Conference on Verification, Model Checking, and Abstract Interpretation
Polymorphic predicate abstraction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Pointer analysis for java programs: novel techniques and applications
Pointer analysis for java programs: novel techniques and applications
Practical pluggable types for java
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Nullness Analysis in Boolean Form
SEFM '08 Proceedings of the 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods
Compositional shape analysis by means of bi-abduction
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A low-level memory model and an accompanying reachability predicate
International Journal on Software Tools for Technology Transfer (STTT)
Dynamic shape analysis via degree metrics
Proceedings of the 2009 international symposium on Memory management
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Pointer analysis: building a foundation for effective program analysis
Pointer analysis: building a foundation for effective program analysis
Cost analysis of java bytecode
ESOP'07 Proceedings of the 16th European conference on Programming
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
Shape analysis for composite data structures
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Efficient context-sensitive shape analysis with graph based heap models
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Points-to analysis with efficient strong updates
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pick your contexts well: understanding object-sensitivity
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Inference of field initialization
Proceedings of the 33rd International Conference on Software Engineering
Software and Systems Modeling (SoSyM)
Shape analysis by predicate abstraction
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Detecting non-cyclicity by abstract compilation into boolean functions
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Pair-sharing analysis of object-oriented programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
A local shape analysis based on separation logic
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Automaton-Based array initialization analysis
LATA'12 Proceedings of the 6th international conference on Language and Automata Theory and Applications
Reachability analysis of program variables
IJCAR'12 Proceedings of the 6th international joint conference on Automated Reasoning
Magic-sets transformation for the analysis of java bytecode
SAS'07 Proceedings of the 14th international conference on Static Analysis
Definite expression aliasing analysis for java bytecode
ICTAC'12 Proceedings of the 9th international conference on Theoretical Aspects of Computing
Reachability-based acyclicity analysis by Abstract Interpretation
Theoretical Computer Science
Inferring complete initialization of arrays
Theoretical Computer Science
Hi-index | 0.00 |
Reachability from a program variable v to a program variable w states that from v, it is possible to follow a path of memory locations that leads to the object bound to w. We present a new abstract domain for the static analysis of possible reachability between program variables or, equivalently, definite unreachability between them. This information is important for improving the precision of other static analyses, such as side-effects, field initialization, cyclicity and path-length analysis, as well as more complex analyses built upon them, such as nullness and termination analysis. We define and prove correct our reachability analysis for Java bytecode, defined as a constraint-based analysis, where the constraint is a graph whose nodes are the program points and whose arcs propagate reachability information in accordance to the abstract semantics of each bytecode instruction. For each program point p, our reachability analysis produces an overapproximation of the ordered pairs of variables 〈v, w〉 such that v might reach w at p. Seen the other way around, if a pair 〈v, w〉 is not present in the overapproximation at p, then v definitely does not reach w at p. We have implemented the analysis inside the Julia static analyzer. Our experiments of analysis of nontrivial Java and Android programs show the improvement of precision due to the presence of reachability information. Moreover, reachability analysis actually reduces the overall cost of nullness and termination analysis.