Conditional termination of loops over heap-allocated data

Static analysis which takes into account the values of data stored in the heap is considered complex and computationally intractable in practice. Thus, most static analyzers do not keep track of object fields nor of array contents, i.e., they are heap-insensitive. In this article, we propose localit...

Full description

Saved in:
Bibliographic Details
Published inScience of computer programming Vol. 92; pp. 2 - 24
Main Authors Albert, Elvira, Arenas, Puri, Genaim, Samir, Puebla, Germán, Román-Díez, Guillermo
Format Journal Article
LanguageEnglish
Published Elsevier B.V 15.10.2014
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Static analysis which takes into account the values of data stored in the heap is considered complex and computationally intractable in practice. Thus, most static analyzers do not keep track of object fields nor of array contents, i.e., they are heap-insensitive. In this article, we propose locality conditions for soundly tracking heap-allocated data in Java (bytecode) programs, by means of ghost non-heap allocated variables. This way, heap-insensitive analysis over the transformed program can infer information on the original heap-allocated data without sacrificing efficiency. If the locality conditions cannot be proven unconditionally, we seek to generate aliasing preconditions which, when they hold in the initial state, guarantee the termination of the program. Experimental results show that we greatly improve the accuracy w.r.t. a heap-insensitive analysis while the overhead introduced is reasonable. •Termination of programs that depends on heap-allocated data.•A reference constancy analysis to infer constant access paths heap data.•Notion of locality partition to guarantee the locality of heap-allocated data.•Inferring the aliasing preconditions to guarantee termination.•Implementation and experimental evaluation of our approach in the COSTA system.
ISSN:0167-6423
1872-7964
DOI:10.1016/j.scico.2013.04.006