Compiler optimizations

Patrick Logan patrickl@servio.gemstone.com
Wed, 21 May 97 13:51 PDT


>From the little I have read of Jeffrey Mark Siskind's Stalin compiler
for Scheme, it sounds like it does an impressive job of case analysis
and choosing representations. The drawback is it requires a "closed
world assumption" in that it requires all the source code for an
application and then special cases the hell out of it.

I have been wondering in the back of my mind about a compromise. For
building a large system like [parts of] an OS, there may be a way to
delineate a subsystem, and apply the Stalin technique to that. Then
multiple entry points can be made available to the interfaces of the
subsystem. The ones that have been special-cased for calls within the
subsystem, and the general ones for calls from other functions.

I think this is a typical trick in Lisp compilers, but I'd like to see
it combined with Stalin-esque subsystem optimization. Has it been done
before? Is it a good idea? The one drawback I have thought of so far
is that to modify something within the subsystem requires some amount
of "retrofitting" of that change to the optimization choices that have
already been made for the subsystem. The scope of recompilation in
that case may have to be widened even as far as recompiling the entire
subsystem.

Then there is the issue of refitting the changes back into a 24x7
host, but that issue is down the road a ways.

-- 
Patrick Logan                 mailto:patrickl@gemstone.com
Voice 503-533-3365            Fax   503-629-8556
Gemstone Systems, Inc         http://www.gemstone.com