Changeset 13295


Ignore:
Timestamp:
Dec 15, 2009, 9:22:45 AM (10 years ago)
Author:
gb
Message:

ppc-gc.c, x86-gc.c: use LISP printf control to print all bits of bad address

when complaining about missing memoization.

pmcl-kernel.c: in main(), if EGC is disabled on startup,

lisp_global(OLDSPACE_DNODE_COUNT) needs to be set to the number of dnodes
in managed_static_area (else stores to objects in that area aren't memoized
and wackiness ensues.)

ppc-exceptions.c, x86-exceptions.c: in handle_gc_trap(), set

lisp_global(OLDSPACE_DNODE_COUNT) correctly (if transiently, if the EGC
will be reenabled after all GC traps are handled.)

Location:
trunk/source/lisp-kernel
Files:
5 edited

Legend:

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

    r13279 r13295  
    19951995  if (egc_enabled) {
    19961996    egc_control(true, NULL);
     1997  } else {
     1998    lisp_global(OLDSPACE_DNODE_COUNT) = area_dnode(managed_static_area->active,managed_static_area->low);
    19971999  }
    19982000  atexit(lazarus);
  • trunk/source/lisp-kernel/ppc-exceptions.c

    r13279 r13295  
    511511        impurify_from_xp(xp, 0L);
    512512        /*        nrs_GC_EVENT_STATUS_BITS.vcell |= gc_integrity_check_bit; */
     513        lisp_global(OLDSPACE_DNODE_COUNT) = 0;
    513514        gc_from_xp(xp, 0L);
    514515      }
    515516      if (selector & GC_TRAP_FUNCTION_PURIFY) {
    516517        purify_from_xp(xp, 0L);
     518        lisp_global(OLDSPACE_DNODE_COUNT) = area_dnode(managed_static_area->active, managed_static_area->low);
    517519        gc_from_xp(xp, 0L);
    518520      }
  • trunk/source/lisp-kernel/ppc-gc.c

    r13067 r13295  
    886886        ref_dnode = area_dnode(start, base);
    887887        if (!ref_bit(refbits, ref_dnode)) {
    888           Bug(NULL, "Missing memoization in doublenode at 0x%08X", start);
     888          Bug(NULL, "Missing memoization in doublenode at 0x" LISP, start);
    889889          set_bit(refbits, ref_dnode);
    890890        }
  • trunk/source/lisp-kernel/x86-exceptions.c

    r13279 r13295  
    262262        impurify_from_xp(xp, 0L);
    263263        /*        nrs_GC_EVENT_STATUS_BITS.vcell |= gc_integrity_check_bit; */
     264        lisp_global(OLDSPACE_DNODE_COUNT) = 0;
    264265        gc_from_xp(xp, 0L);
    265266      }
    266267      if (selector & GC_TRAP_FUNCTION_PURIFY) {
    267268        purify_from_xp(xp, 1);
     269        lisp_global(OLDSPACE_DNODE_COUNT) = area_dnode(managed_static_area->active, managed_static_area->low);
    268270        gc_from_xp(xp, 0L);
    269271      }
  • trunk/source/lisp-kernel/x86-gc.c

    r13279 r13295  
    12071207        ref_dnode = area_dnode(start, base);
    12081208        if (!ref_bit(refbits, ref_dnode)) {
    1209           Bug(NULL, "Missing memoization in doublenode at 0x%08X", start);
     1209          Bug(NULL, "Missing memoization in doublenode at 0x" LISP, start);
    12101210          set_bit(refbits, ref_dnode);
    12111211        }
Note: See TracChangeset for help on using the changeset viewer.