Changeset 13278


Ignore:
Timestamp:
Dec 9, 2009, 6:35:18 PM (10 years ago)
Author:
gz
Message:

Ignore refbits for population.data

Location:
branches/working-0711/ccl/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lisp-kernel/gc-common.c

    r13263 r13278  
    12221222      */
    12231223      LispObj this = lisp_global(WEAKVLL); /* all populations as of last gc */
     1224      LispObj *tenured_low = (LispObj *)tenured_area->low;
     1225      natural tenured_dnodes = area_dnode(GCarealow, tenured_low);
     1226      bitvector refbits = tenured_area->refbits;
     1227
    12241228      while (this) {
    12251229        LispObj *base = ptr_from_lispobj(this);
     
    12291233          base[1] = GCweakvll;
    12301234          GCweakvll = ptr_to_lispobj(base);
     1235          /* Since will be doing weak processing, don't treat the data as root */
     1236          dnode = area_dnode(&base[3], tenured_low);
     1237          if (dnode < tenured_dnodes) {
     1238            clr_bit(refbits, dnode);
     1239          }
    12311240        }
    12321241        else {
     
    13791388    reap_gcable_ptrs();
    13801389
     1390    /* Restore population data refbits for forwarding */
     1391    if (GCn_ephemeral_dnodes) {
     1392      LispObj *tenured_low = (LispObj *)tenured_area->low;
     1393      natural tenured_dnodes = area_dnode(GCarealow, tenured_low);
     1394      bitvector refbits = tenured_area->refbits;
     1395      LispObj this = lisp_global(WEAKVLL);
     1396
     1397      while (this) {
     1398        LispObj *base = ptr_from_lispobj(this);
     1399        natural dnode = area_dnode(&base[3], tenured_low);
     1400        if ((dnode < tenured_dnodes) && (base[3] >= GCarealow)) {
     1401          set_bit(refbits, dnode);
     1402        }
     1403        this = base[1];
     1404      }
     1405    }
     1406
    13811407    GCrelocptr = global_reloctab;
    13821408    GCfirstunmarked = calculate_relocation();
  • branches/working-0711/ccl/lisp-kernel/x86-gc.c

    r13263 r13278  
    12051205        ref_dnode = area_dnode(start, base);
    12061206        if (!ref_bit(refbits, ref_dnode)) {
    1207           Bug(NULL, "Missing memoization in doublenode at 0x%08X", start);
     1207          Bug(NULL, "Missing memoization in doublenode at 0x" LISP "\n", start);
    12081208          set_bit(refbits, ref_dnode);
    12091209        }
Note: See TracChangeset for help on using the changeset viewer.