X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fpurify.c;h=5cf5e97618ed2ce55da4dd7654b054534366753a;hb=2cb068e245e00505076e9c325424df2a1260bfb1;hp=bedbfd7239676605904d7629e71a38a46f894061;hpb=3a0f3612dc2bbf3e4e8e7395bcbbf8cd1791b963;p=sbcl.git diff --git a/src/runtime/purify.c b/src/runtime/purify.c index bedbfd7..5cf5e97 100644 --- a/src/runtime/purify.c +++ b/src/runtime/purify.c @@ -70,14 +70,6 @@ static long later_count = 0; #define SIMPLE_ARRAY_WORD_WIDETAG SIMPLE_ARRAY_UNSIGNED_BYTE_64_WIDETAG #endif -/* FIXME: Shouldn't this be defined in sbcl.h? See also notes in - * cheneygc.c */ - -#ifdef LISP_FEATURE_SPARC -#define FUN_RAW_ADDR_OFFSET 0 -#else -#define FUN_RAW_ADDR_OFFSET (6*sizeof(lispobj) - FUN_POINTER_LOWTAG) -#endif static boolean forwarding_pointer_p(lispobj obj) @@ -368,6 +360,9 @@ valid_dynamic_space_pointer(lispobj *pointer, lispobj *start_addr) #endif case SAP_WIDETAG: case WEAK_POINTER_WIDETAG: +#ifdef LUTEX_WIDETAG + case LUTEX_WIDETAG: +#endif break; default: @@ -807,7 +802,7 @@ ptrans_code(lispobj thing) ((struct simple_fun *)native_pointer(func))->self += FUN_RAW_ADDR_OFFSET; #endif - pscav_later(&((struct simple_fun *)native_pointer(func))->name, 3); + pscav_later(&((struct simple_fun *)native_pointer(func))->name, 4); } return result; @@ -945,6 +940,11 @@ ptrans_otherptr(lispobj thing, lispobj header, boolean constant) #endif case SAP_WIDETAG: return ptrans_unboxed(thing, header); +#ifdef LUTEX_WIDETAG + case LUTEX_WIDETAG: + gencgc_unregister_lutex(native_pointer(thing)); + return ptrans_unboxed(thing, header); +#endif case RATIO_WIDETAG: case COMPLEX_WIDETAG: @@ -1134,7 +1134,7 @@ pscav_code(struct code*code) ((struct simple_fun *)native_pointer(func))->self += FUN_RAW_ADDR_OFFSET; #endif - pscav_later(&((struct simple_fun *)native_pointer(func))->name, 3); + pscav_later(&((struct simple_fun *)native_pointer(func))->name, 4); } return CEILING(nwords,2); @@ -1356,7 +1356,6 @@ pscav(lispobj *addr, long nwords, boolean constant) #if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64) case CLOSURE_HEADER_WIDETAG: - case FUNCALLABLE_INSTANCE_HEADER_WIDETAG: /* The function self pointer needs special care on the * x86 because it is the real entry point. */ { @@ -1514,10 +1513,12 @@ purify(lispobj static_roots, lispobj read_only_roots) (lispobj *)SymbolValue(BINDING_STACK_POINTER,thread) - (lispobj *)thread->binding_stack_start, 0); +#ifdef LISP_FEATURE_SB_THREAD pscav( (lispobj *) (thread+1), fixnum_value(SymbolValue(FREE_TLS_INDEX,0)) - (sizeof (struct thread))/(sizeof (lispobj)), 0); +#endif } @@ -1579,7 +1580,7 @@ purify(lispobj static_roots, lispobj read_only_roots) #endif os_zero((os_vm_address_t) current_dynamic_space, - (os_vm_size_t) DYNAMIC_SPACE_SIZE); + (os_vm_size_t) dynamic_space_size); /* Zero the stack. Note that the stack is also zeroed by SUB-GC * calling SCRUB-CONTROL-STACK - this zeros the stack on the x86. */