x86 update

Stephen Weeks MLton@sourcelight.com
Tue, 17 Oct 2000 15:22:04 -0700 (PDT)


> BTW, I found a minor bug in the calculation of maxFrameSize in
> backend.fun; this was tripping the 
> assert(layout->numBytes <= s->maxFrameSize);
> in the invariant function of gc.c when debugging was turned on (yet
> another reason to go with the first option).  I discovered it when
> compiling regression/kitsimple.sml.  I think that the bug is in the
> genCont function of backend.fun.  The frame size for that limitCheck is
> not compared to the maxFrameSize set by allocate-registers.  Similarly at
> the end under the (* Build initGlobals chunk *) comment, another limit
> check with a new frame size (although I suspect that no program has it's
> maxFrameSize dominated by the 1 word frame size of initGlobals). 

Yep.  That was the bug.  Actually, the way maxFrameSize was computed in the
backend was stupid.  I took it out of allocate-registers.fun and backend.fun and
moved it all into machine.fun, which now just folds over all the frames (duh).
That fixed the bug.  If you need the fix now, lemme know.  Else you'll get it in
the next snapshot (later this week, if I had to guess).