1992 · 118 citations · 13 references
ComputingComputer EngineeringComputer ScienceCompilersData StructuresProgramming LanguagesControl-flow AnalysisData-flow AnalysisDynamic ProgrammingGarbage CollectionStatic AnalysisDynamic Memory AllocationEscape AnalysisGarbage Collection OverheadGarbage Collection Overhead AnalysisHeap AnalysisObject Lifetime AnalysisObjectsStorage Allocation
Higher order functional programs constantly allocate objects dynamically. These objects are typically cons cells, closures, and records and are generally allocated in the heap and reclaimed later by some garbage collection process. This paper describes a compile time analysis, called escape analysis, for determining the lifetime of dynamically created objects in higher order functional programs, and describes optimizations that can be performed, based on the analysis, to improve storage allocation and reclamation of such objects. In particular, our analysis can be applied to programs manipulating lists, in which case optimizations can be performed to allow cons cells in spines of lists to be either reclaimed immediately or reused without incurring any garbage collection overhead. In a previous paper on escape analysis [10], we had left open the problem of performing escape analysis on lists.
13
Analysis of pointers and structures
David Chase, Mark N. Wegman, F. K. Zadeck · ACM SIGPLAN Notices · 2004 · 437 citations
ORBIT: an optimizing compiler for scheme
Norman I. Adams, David Kranz, Richard Kelsey et al. · 1986 · 209 citations
Lifetime analysis of dynamically allocated objects
Cristina Ruggieri, ThomasP. Murtagh · 1988 · 114 citations · Full text