• simonmar's avatar
    [project @ 2003-04-22 16:25:08 by simonmar] · 1da232fc
    simonmar authored
    Fix an obscure bug: the most general kind of heap check,
    HEAP_CHECK_GEN(), is supposed to save the contents of *every* register
    known to the STG machine (used in cases where we either can't figure
    out which ones are live, or doing so would be too much hassle).  The
    problem is that it wasn't saving the L1 register.
    A slight complication arose in that saving the L1 register pushed the
    size of the frame over the 16 words allowed for the size of the bitmap
    stored in the frame, so I changed the layout of the frame a bit.
    Describing all the registers using a single bitmap is overkill when
    only 8 of them can actually be pointers, so now the bitmap is only 8
    bits long and we always skip over a fixed number of non-ptr words to
    account for all the non-ptr regs.  This is all described in StgMacros.h.