[MLton] fields at the front of GC_state

Stephen Weeks sweeks@sweeks.com
Tue, 4 Jul 2006 18:19:54 -0700


One thing that might be hurting performance with the new runtime, both
in speed and code size, is that the frequently used fields have been
moved from the front of GC_state elsewhere.  The old runtime had the
following at the front of GC_state.

        /* These fields are at the front because they are the most commonly
         * referenced, and having them at smaller offsets may decrease code size.
         */
        pointer frontier;       /* base <= frontier < limit */
        pointer limit;          /* end of from space */
        pointer stackTop;
        pointer stackLimit;     /* stackBottom + stackSize - maxFrameSize */
        uint exnStack;

I see that all of these fields still exist in the "top level" of
GC_state, and so could easily be moved back to the front.  As much as
I like alphabetization, I can stomach the loss of it here if it buys
performance.