X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fpurify.c;h=3440b2f73e0799f1bf7936ece4df1efd445b6ffb;hb=bf77540f53dbb693d87b9ff4fbfd09d3de7fb2d9;hp=a1f21b65f9d263b4fd9440ec39f68ff3ba34bb9e;hpb=04ee798422795a1e3d664c257a6b02b833eec4c6;p=sbcl.git diff --git a/src/runtime/purify.c b/src/runtime/purify.c index a1f21b6..3440b2f 100644 --- a/src/runtime/purify.c +++ b/src/runtime/purify.c @@ -27,13 +27,14 @@ #include "interrupt.h" #include "purify.h" #include "interr.h" -#include "fixnump.h" #include "gc.h" #include "gc-internal.h" #include "thread.h" #include "genesis/primitive-objects.h" #include "genesis/static-symbols.h" #include "genesis/layout.h" +#include "genesis/hash-table.h" +#include "gencgc.h" /* We don't ever do purification with GENCGC as of 1.0.5.*. There was * a lot of hairy and fragile ifdeffage in here to support purify on @@ -497,7 +498,7 @@ ptrans_otherptr(lispobj thing, lispobj header, boolean constant) return ptrans_unboxed(thing, header); #ifdef LUTEX_WIDETAG case LUTEX_WIDETAG: - gencgc_unregister_lutex(native_pointer(thing)); + gencgc_unregister_lutex((struct lutex *) native_pointer(thing)); return ptrans_unboxed(thing, header); #endif @@ -716,8 +717,9 @@ pscav(lispobj *addr, long nwords, boolean constant) case SIMPLE_VECTOR_WIDETAG: if (HeaderValue(thing) == subtype_VectorValidHashing) { - *addr = (subtype_VectorMustRehash << N_WIDETAG_BITS) | - SIMPLE_VECTOR_WIDETAG; + struct hash_table *hash_table = + (struct hash_table *)native_pointer(addr[2]); + hash_table->needs_rehash_p = T; } count = 2; break;