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.
We have formalised a basic escape domain
as an abstract interpretation of concrete states, which we then refine
into a less abstract domain and, hence,
leading to a more precise escape analysis.
We provide optimality results for both these analyses, 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 the second analyses is able to
detect the stack allocatable creation points of Java (bytecode)
applications.
-
In this project we are studying new static analysis
for finding approximations to
the path-length of variables in imperative, object-oriented programs.
The path-length of a variable v is the cardinality of the
longest chain of pointers that can be followed from v.
As we are concerned with object-oriented programs,
the objects are the main entities;
so that their size and size of the data-structures contained therein,
are natural and useful norms for establishing termination.
Our proposed path-length analysis
provides a description of the path-length of the program variables
with the aim of supporting (automatic)
termination inference for programs working over
dynamically created data-structures (objects).