Shape analysis as a generalized path problem
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
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
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Introduction to Automata Theory, Languages and Computability
Introduction to Automata Theory, Languages and Computability
Flow analysis and optimization of LISP-like structures
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Backwards Analysis for Compile-time Garbage Collection
ESOP '90 Proceedings of the 3rd European Symposium on Programming
A Usage Analysis with Bounded Usage Polymorphism and Subtyping
IFL '00 Selected Papers from the 12th International Workshop on Implementation of Functional Languages
Escape analysis for JavaTM: Theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
A type system for safe memory management and its proof of correctness
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Hi-index | 0.00 |
Shape analysis is concerned with the compile-time determination of the 'shape' the heap may take at runtime, meaning by this the pointer chains that may happen within, and between, the data structures built by the program. This includes detecting alias and sharing between the program variables. Functional languages facilitate somehow this task due to the absence of variable updating. Even though, sharing and aliasing are still possible. We present an abstract interpretation-based analysis computing precise information about these relations. In fact, the analyis gives an information more precise than just the existence of sharing. It informs about the paths through which this sharing takes place. This information is critical in order to get a modular analysis and not to lose precision when calling an already analysed function. The main innovation with respect to the literature is the use of regular languages to specify the possible pointer paths from a variable to its descendants. This additional information makes the analysis much more precise while still being affordable in terms of efficiency. We have implemented it and give convincing examples of its precision.