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...

Descripción completa

Detalles Bibliográficos
Autores: Albert Albiol, Elvira María, Arenas Sánchez, Purificación, Genaim, Samir, Puebla, Germán, Román Díez, Guillermo
Tipo de recurso: artículo
Fecha de publicación:2014
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:inglés
OAI Identifier:oai:docta.ucm.es:20.500.14352/35134
Acceso en línea:https://hdl.handle.net/20.500.14352/35134
Access Level:acceso abierto
Palabra clave:004.451
Static Analysis
Heap-Sensitive Analysis
Termination
Java Bytecode
Program Transformation
Informática (Informática)
Sistemas operativos (Ordenadores)
Software
1203.17 Informática
3304.16 Diseño Lógico
Descripción
Sumario: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.