Abstract
We describe a lifetime analysis method baaed on abstract interpretation of a parallel, non-strict functional language. This method is an extension to previous work in the area which has focused primarily on sequential languages, We present deallocation command verification and insertion algorithms that use this analysis method, and we describe the compile-time and run-time performance of these sJgorithms when applied to several large benchmarks. No previous studies seriously evaluated the performance of compiler-directed storage reclamation. We have found these algorithms to be quite effective on scientific Id programs using tuples and arrays, as well es a symbolic Id program using recursive data structures. Using our techniques, we were able to insert code that reclaimed 80 to 100 percent of the total dynamic storage allocated by several programs at a cost of a factor of 1.5 to 30 increase in compilation time. Although compilation time may be increased significantly by these techniques, the payoff in terms of the improved storage management behavior of programs seems worthwhile.

This publication has 8 references indexed in Scilit: