Storage use analysis and its applications

  • Authors:
  • Manuel Serrano;Marc Feeley

  • Affiliations:
  • Université de Montréal C.P. 6128, succ. centre-ville, Montréal Canada H3C 3J7 and INRIA B.P. 105, Rocquencourt, 78153 Le Chesnay Cedex, France;Université de Montréal C.P. 6128, succ. centre-ville, Montréal Canada H3C 3J7

  • Venue:
  • Proceedings of the first ACM SIGPLAN international conference on Functional programming
  • Year:
  • 1996

Quantified Score

Hi-index 0.00

Visualization

Abstract

In this paper we present a new program analysis method which we call Storage Use Analysis. This analysis deduces how objects are used by the program and allows the optimization of their allocation. This analysis can be applied to both statically typed languages (e.g. ML) and latently typed languages (e.g. Scheme). It handles side-effects, higher order functions, separate compilation and does not require CPS transformation. We show the application of our analysis to two important optimizations: stack allocation and unboxing. The first optimization replaces some heap allocations by stack allocations for user and system data storage (e.g. lists, vectors, procedures). The second optimization avoids boxing some objects. This analysis and associated optimitations have been implemented in the Bigloo Scheme/ML compiler. Experimental results show that for many allocation intensive programs we get a significant speedup. In particular, numerically intensive programs are almost 20 times faster because floating point numbers are unboxed and no longer heap allocated.