Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Lifetime analysis of dynamically allocated objects
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Object-oriented type inference
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
Abstract interpretation and application to logic programs
Journal of Logic Programming
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
On the complexity of escape analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Disjunctive program analysis for algebraic data types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Escape analysis: correctness proof, implementation and experimental results
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The quotient of an abstract interpretation
Theoretical Computer Science
A logical model for relational abstract domains
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient and precise modeling of exceptions for the analysis of Java programs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Removing unnecessary synchronization in Java
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
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Scalable propagation-based call graph construction algorithms
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Sets and constraint logic programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Incrementalized pointer and escape analysis
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Pointer and escape analysis for multithreaded programs
PPoPP '01 Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming
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
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Java Virtual Machine Specification
Java Virtual Machine Specification
Logical optimality of groundness analysis
Theoretical Computer Science
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Coalgebras and monads in the semantics of java
Theoretical Computer Science - Special issue: Algebraic methodology and software technology
An Application of Abstract Interpretation of Logic Programs: Occur Check Reduction
ESOP '86 Proceedings of the European Symposium on Programming
A Foundation of Escape Analysis
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Refining and Compressing Abstract Domains
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
A Refinement of the Escape Property
VMCAI '02 Revised Papers from the Third International Workshop on Verification, Model Checking, and Abstract Interpretation
Modular Static Program Analysis
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Simultaneous Demand-Driven Data-Flow and Call Graph Analysis
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Class analyses as abstract interpretations of trace semantics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Escape analysis for JavaTM: Theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stack allocation and synchronization optimizations for Java using escape analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Java(TM) Programming Language, The (4th Edition)
Java(TM) Programming Language, The (4th Edition)
Scaling Java points-to analysis using SPARK
CC'03 Proceedings of the 12th international conference on Compiler construction
Logic programs as compact denotations
Computer Languages, Systems and Structures
Heap space analysis for java bytecode
Proceedings of the 6th international symposium on Memory management
Software and Systems Modeling (SoSyM)
Hi-index | 0.00 |
Escape analysis of object-oriented languages approximates the set of objects which do not escape from a given context. If we take a method as context, the non-escaping objects can be allocated on its activation stack; if we take a thread, Java synchronisation locks on such objects are not needed. In this paper, we formalise a basic escape domain $${\mathcal{E}}$$ as an abstract interpretation of concrete states, which we then refine into an abstract domain $${\cal ER}$$ which is more concrete than $${\mathcal{E}}$$ and, hence, leads to a more precise escape analysis than $${\mathcal{E}}$$. We provide optimality results for both $${\mathcal{E}}$$ and $${\cal ER}$$, in the form of Galois insertions from the concrete to the abstract domains and of optimal abstract operations. The Galois insertion property is obtained by restricting the abstract domains to those elements which do not contain garbage, by using an abstract garbage collector. Our implementation of $${\cal ER}$$ is hence an implementation of a formally correct escape analyser, able to detect the stack allocatable creation points of Java (bytecode) applications.