Making pure object-oriented languages practical
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Partial online cycle elimination in inclusion constraint graphs
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Graph-theoretic methods in database theory
PODS '90 Proceedings of the ninth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Pointer analysis for programs with structures and casting
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Compositional pointer and escape analysis for Java programs
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Projection merging: reducing redundancies in inclusion constraint graphs
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Unification-based pointer analysis with directional assignments
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Off-line variable substitution for scaling points-to analysis
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Practical virtual method call resolution for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scalable propagation-based call graph construction algorithms
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Demand-driven pointer analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Incrementalized pointer and escape analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Ultra-fast aliasing analysis using CLA: a million lines of C code in a second
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
Extending and evaluating flow-insenstitive and context-insensitive points-to analyses for Java
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
Parameterized object sensitivity for points-to and side-effect analyses for Java
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Evaluating the precision of static reference analysis using profiling
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Unified Analysis of Array and Object References in Strongly Typed Languages
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
A Toolkit for Constructing Type- and Constraint-Based Program Analyses
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Solving Demand Versions of Interprocedural Analysis Problems
CC '94 Proceedings of the 5th International Conference on Compiler Construction
Design, implementation and evaluation of adaptive recompilation with on-stack replacement
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Generalized aliasing as a basis for program analysis tools
Generalized aliasing as a basis for program analysis tools
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
Jedd: a BDD-based relational extension of Java
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
The set constraint/CFL reachability connection in practice
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
IBM Systems Journal
Client-driven pointer analysis
SAS'03 Proceedings of the 10th international conference on Static analysis
Dimensions of precision in reference analysis of object-oriented programming languages
CC'03 Proceedings of the 12th international conference on Compiler construction
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
Banshee: a scalable constraint-based analysis toolkit
SAS'05 Proceedings of the 12th international conference on Static Analysis
Refinement-based context-sensitive points-to analysis for Java
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Regularly annotated set constraints
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Interactive, scalable, declarative program analysis: from prototype to implementation
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Efficient field-sensitive pointer analysis of C
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type qualifier inference for java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Subcubic algorithms for recursive state machines
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Demand-driven alias analysis for C
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Merging equivalent contexts for scalable heap-cloning-based context-sensitive points-to analysis
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
An Efficient Algorithm for Solving the Dyck-CFL Reachability Problem on Trees
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Scaling CFL-Reachability-Based Points-To Analysis Using Context-Sensitive Must-Not-Alias Analysis
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
The Complexity of Andersen's Analysis in Practice
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Relooper: refactoring for loop parallelism in Java
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Strictly declarative specification of sophisticated points-to analyses
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
An Ahead-of-time Yet Context-Sensitive Points-to Analysis for Java
Electronic Notes in Theoretical Computer Science (ENTCS)
Conditional weighted pushdown systems and applications
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Type-dependence analysis and program transformation for symbolic execution
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Detecting inefficiently-used containers to avoid bloat
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
A novel analysis space for pointer analysis and its application for bug finding
Science of Computer Programming
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ISoLA'10 Proceedings of the 4th international conference on Leveraging applications of formal methods, verification, and validation - Volume Part I
Stacking-based context-sensitive points-to analysis for java
HVC'09 Proceedings of the 5th international Haifa verification conference on Hardware and software: verification and testing
Demand-driven context-sensitive alias analysis for Java
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Refactoring Java programs using concurrent libraries
Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Identifying future field accesses in exhaustive state space traversal
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
On-demand dynamic summary-based points-to analysis
Proceedings of the Tenth International Symposium on Code Generation and Optimization
Tracking rootkit footprints with a practical memory analysis system
Security'12 Proceedings of the 21st USENIX conference on Security symposium
Correlation tracking for points-to analysis of javascript
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Liveness-Based pointer analysis
SAS'12 Proceedings of the 19th international conference on Static Analysis
An incremental points-to analysis with CFL-Reachability
CC'13 Proceedings of the 22nd international conference on Compiler Construction
Fast algorithms for Dyck-CFL-reachability with applications to alias analysis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Finding optimum abstractions in parametric dataflow analysis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hybrid context-sensitivity for points-to analysis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Efficient construction of approximate call graphs for JavaScript IDE services
Proceedings of the 2013 International Conference on Software Engineering
Fast condensation of the program dependence graph
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Alias analysis for object-oriented programs
Aliasing in Object-Oriented Programming
Hi-index | 0.05 |
We present a points-to analysis technique suitable for environments with small time and memory budgets, such as just-in-time (JIT) compilers and interactive development environments (IDEs). Our technique is demand-driven, performing only the work necessary to answer each query (a request for a variable's points-to information) issued by a client. In cases where even the demand-driven approach exceeds the time budget for a query, we employ early termination, i.e., stopping the analysis prematurely and returning an over-approximated result to the client. Our technique improves on previous demand-driven points-to analysis algorithms [17, 33] by achieving much higher precision under small time budgets and early termination.We formulate Andersen's analysis [5] for Java as a CFL-reachability problem [33]. This formulation shows that Andersen's analysis for Java is a balanced-parentheses problem, an insight that enables our new techniques. We exploit the balanced parentheses structure to approximate Andersen's analysis by regularizing the CFL-reachability problem, yielding an asymptotically cheaper algorithm. We also show how to regain most of the precision lost in the regular approximation as needed through refinement. Our evaluation shows that our regularization and refinement approach achieves nearly the precision of field-sensitive Andersen's analysis in time budgets as small as 2ms per query. Our technique can yield speedups of up to 16x over computing an exhaustive Andersen's analysis for some clients, with little to no precision loss.