X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fpurify.c;h=145ea3c32fd86eb0ae2b64a7d7eb856a7210aa8b;hb=ed1910efb36f71b5ebe33b5ffffd7195e15644de;hp=ec43c3afddc91fffd53fc942c8477a574faf95c2;hpb=72703da290c601b571b708045861eba5a7eefc58;p=sbcl.git diff --git a/src/runtime/purify.c b/src/runtime/purify.c index ec43c3a..145ea3c 100644 --- a/src/runtime/purify.c +++ b/src/runtime/purify.c @@ -27,7 +27,6 @@ #include "interrupt.h" #include "purify.h" #include "interr.h" -#include "fixnump.h" #include "gc.h" #include "gc-internal.h" #include "thread.h" @@ -497,12 +496,6 @@ 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((struct lutex *) native_pointer(thing)); - return ptrans_unboxed(thing, header); -#endif - case RATIO_WIDETAG: case COMPLEX_WIDETAG: case SIMPLE_ARRAY_WIDETAG: @@ -561,10 +554,8 @@ ptrans_otherptr(lispobj thing, lispobj header, boolean constant) return ptrans_vector(thing, 16, 0, 0, constant); case SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG: -#ifdef SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG - case SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG: - case SIMPLE_ARRAY_UNSIGNED_BYTE_29_WIDETAG: -#endif + case SIMPLE_ARRAY_FIXNUM_WIDETAG: + case SIMPLE_ARRAY_UNSIGNED_FIXNUM_WIDETAG: #ifdef SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG case SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG: case SIMPLE_ARRAY_UNSIGNED_BYTE_31_WIDETAG: @@ -572,18 +563,12 @@ ptrans_otherptr(lispobj thing, lispobj header, boolean constant) return ptrans_vector(thing, 32, 0, 0, constant); #if N_WORD_BITS == 64 -#ifdef SIMPLE_ARRAY_UNSIGNED_BYTE_60_WIDETAG - case SIMPLE_ARRAY_UNSIGNED_BYTE_60_WIDETAG: -#endif #ifdef SIMPLE_ARRAY_UNSIGNED_BYTE_63_WIDETAG case SIMPLE_ARRAY_UNSIGNED_BYTE_63_WIDETAG: #endif #ifdef SIMPLE_ARRAY_UNSIGNED_BYTE_64_WIDETAG case SIMPLE_ARRAY_UNSIGNED_BYTE_64_WIDETAG: #endif -#ifdef SIMPLE_ARRAY_SIGNED_BYTE_61_WIDETAG - case SIMPLE_ARRAY_SIGNED_BYTE_61_WIDETAG: -#endif #ifdef SIMPLE_ARRAY_SIGNED_BYTE_64_WIDETAG case SIMPLE_ARRAY_SIGNED_BYTE_64_WIDETAG: #endif @@ -719,7 +704,7 @@ pscav(lispobj *addr, long nwords, boolean constant) case SIMPLE_VECTOR_WIDETAG: if (HeaderValue(thing) == subtype_VectorValidHashing) { struct hash_table *hash_table = - (struct hash_table *)native_pointer(((lispobj *)thing)[2]); + (struct hash_table *)native_pointer(addr[2]); hash_table->needs_rehash_p = T; } count = 2; @@ -775,10 +760,10 @@ pscav(lispobj *addr, long nwords, boolean constant) break; case SIMPLE_ARRAY_UNSIGNED_BYTE_32_WIDETAG: -#ifdef SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG - case SIMPLE_ARRAY_SIGNED_BYTE_30_WIDETAG: - case SIMPLE_ARRAY_UNSIGNED_BYTE_29_WIDETAG: -#endif + + case SIMPLE_ARRAY_FIXNUM_WIDETAG: + case SIMPLE_ARRAY_UNSIGNED_FIXNUM_WIDETAG: + #ifdef SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG case SIMPLE_ARRAY_SIGNED_BYTE_32_WIDETAG: case SIMPLE_ARRAY_UNSIGNED_BYTE_31_WIDETAG: @@ -789,10 +774,6 @@ pscav(lispobj *addr, long nwords, boolean constant) #if N_WORD_BITS == 64 case SIMPLE_ARRAY_UNSIGNED_BYTE_64_WIDETAG: -#ifdef SIMPLE_ARRAY_SIGNED_BYTE_61_WIDETAG - case SIMPLE_ARRAY_SIGNED_BYTE_61_WIDETAG: - case SIMPLE_ARRAY_UNSIGNED_BYTE_60_WIDETAG: -#endif #ifdef SIMPLE_ARRAY_SIGNED_BYTE_64_WIDETAG case SIMPLE_ARRAY_SIGNED_BYTE_64_WIDETAG: case SIMPLE_ARRAY_UNSIGNED_BYTE_63_WIDETAG: @@ -955,7 +936,7 @@ purify(lispobj static_roots, lispobj read_only_roots) fflush(stdout); #endif pscav((lispobj *)all_threads->control_stack_start, - current_control_stack_pointer - + access_control_stack_pointer(all_threads) - all_threads->control_stack_start, 0); @@ -965,7 +946,7 @@ purify(lispobj static_roots, lispobj read_only_roots) #endif pscav( (lispobj *)all_threads->binding_stack_start, - (lispobj *)current_binding_stack_pointer - + (lispobj *)get_binding_stack_pointer(all_threads) - all_threads->binding_stack_start, 0); @@ -1023,15 +1004,17 @@ purify(lispobj static_roots, lispobj read_only_roots) printf(" cleanup"); fflush(stdout); #endif +#ifdef LISP_FEATURE_HPUX + clear_auto_gc_trigger(); /* restore mmap as it was given by os */ +#endif - os_zero((os_vm_address_t) current_dynamic_space, - (os_vm_size_t) dynamic_space_size); + os_zero((os_vm_address_t) current_dynamic_space, dynamic_space_size); /* Zero the stack. */ - os_zero((os_vm_address_t) current_control_stack_pointer, + os_zero((os_vm_address_t) access_control_stack_pointer(all_threads), (os_vm_size_t) ((all_threads->control_stack_end - - current_control_stack_pointer) * sizeof(lispobj))); + access_control_stack_pointer(all_threads)) * sizeof(lispobj))); /* It helps to update the heap free pointers so that free_heap can * verify after it's done. */