For call intensive programs, function calls are major bottlenecks during program execution since they usually force register contents to be spilled into memory. Such register to memory spills are much more pronounced in presence of recursion. A function call is usually accompanied by the creation of its activation record at function entry. In this paper, we will deviate from this usual practice; we create an activation record only when we find it necessary. The result is that on many occasions we can execute a function call without actually creating its activation record. We call our strategy lazy activation record strategy (LARS) and show how this strategy is particularly important for call–intensive programs. The LARS subsumes many traditional techniques like leaf-call optimization and tailrecursion optimization, and in addition, it extends Chow’s shrink-wrapping in terms of scope and granularity. We also demonstrate how the LARS can be an effective optimization strategy in cas...
Manoranjan Satpathy, Rabi N. Mahapatra, Siddharth