Changeset 14422


Ignore:
Timestamp:
Nov 10, 2010, 3:11:26 AM (9 years ago)
Author:
gb
Message:

When walking the managed_static_area's refbits (in
mark_managed_static_refs() and forward_memoized_area(), don't read the
next word from the bitvector if we're at the end. (If the bitvector
ends on a page boundary, the page following the bitvector may be
unmapped.)

(This fencepost has always been there in mark_memoized_area(), but the
word following the end of the traditional intergenerational references
map is always mapped in that case - it's part of the dynamic area's
markbits vector.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/gc-common.c

    r14295 r14422  
    11381138        memo_dnode += remain;
    11391139        p += (remain+remain);
    1140         bits = *++bitsp;
     1140        if (memo_dnode < num_memo_dnodes) {
     1141          bits = *++bitsp;
     1142        }
    11411143        bitidx = 0;
    11421144      } else {
     
    13381340          *bitsp = outbits;
    13391341        }
    1340         bits = *++bitsp;
     1342        if (memo_dnode < num_memo_dnodes) {
     1343          bits = *++bitsp;
     1344        }
    13411345        inbits = outbits = bits;
    13421346        bitidx = 0;
Note: See TracChangeset for help on using the changeset viewer.