Lambda-lifting a block-structured program transforms it into a set of recur
sive equations. We present the symmetric transformation: lambda-dropping. L
ambda-dropping a set of recursive equations restores block structure and le
xical scope.
For lack of block structure and lexical scope, recursive equations must car
ry around all the parameters that any of their callees might possibly need.
Both lambda-lifting and lambda-dropping thus require one to compute Def/Us
e paths:
for lambda-lifting: each of the functions occurring in the path of a free v
ariable is passed this variable as a parameter;
for lambda-dropping: parameters which are used in the same scope as their d
efinition do not need to be passed along in their path.
A program whose blocks have no free variables is scope-insensitive. Its blo
cks are then free to float (for lambda-lifting) or to sink (for lambda-drop
ping) along the vertices of the scope tree.
To summarize:
[GRAPHICS]
Our primary application is partial evaluation. Indeed, many partial evaluat
ors for procedural programs operate on recursive equations. To this end, th
ey lambda-lift source programs in a pre-processing phase. But often, partia
l evaluators [automatically] produce residual recursive equations with doze
ns of parameters, which most compilers do not handle efficiently. We solve
this critical problem by lambda-dropping residual programs in a post-proces
sing phase, which significantly improves both their compile time and their
run time.
To summarize:
[GRAPHICS]
Lambda-lifting has been presented as an intermediate transformation in comp
ilers for functional languages. We study lambda-lifting and lambda-dropping
per se, though lambda-dropping also has a use as an intermediate transform
ation in a compiler: we noticed that lambda-dropping a program corresponds
to transforming it into the functional representation of its optimal SSA fo
rm. This observation actually led us to substantially improve our PEPM'97 p
resentation of lambda-dropping. (C) 2000 Published by Elsevier Science B.V.
All rights reserved.