0.9.0.17: minor tweaks
[sbcl.git] / src / runtime / purify.c
index 35635ee..1c92c0a 100644 (file)
@@ -208,7 +208,7 @@ valid_dynamic_space_pointer(lispobj *pointer, lispobj *start_addr)
            || ((start_addr[0] & FIXNUM_TAG_MASK) == 0) /* fixnum */
            || (widetag_of(start_addr[0]) == CHARACTER_WIDETAG)
 #if N_WORD_BITS == 64
-           || (widetag_of(start_addr[1]) == SINGLE_FLOAT_WIDETAG)
+           || (widetag_of(start_addr[0]) == SINGLE_FLOAT_WIDETAG)
 #endif
            || (widetag_of(start_addr[0]) == UNBOUND_MARKER_WIDETAG))
           && (is_lisp_pointer(start_addr[1])
@@ -1599,6 +1599,10 @@ purify(lispobj static_roots, lispobj read_only_roots)
 #endif
 #endif
 
+    /* Blast away instruction cache */
+    os_flush_icache((os_vm_address_t)READ_ONLY_SPACE_START, READ_ONLY_SPACE_SIZE);
+    os_flush_icache((os_vm_address_t)STATIC_SPACE_START, STATIC_SPACE_SIZE);
+
 #ifdef PRINTNOISE
     printf(" done]\n");
     fflush(stdout);