0.9.17.8:
[sbcl.git] / src / runtime / purify.c
index bedbfd7..56ec207 100644 (file)
@@ -368,6 +368,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:
@@ -945,6 +948,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:
@@ -1356,7 +1364,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 +1521,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
     }