1.0.48.35: SB-EXT:GC-LOGFILE
[sbcl.git] / src / runtime / purify.c
index ec43c3a..90c4669 100644 (file)
@@ -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"
@@ -719,7 +718,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;
@@ -955,7 +954,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 +964,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 +1022,18 @@ 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);
 
     /* 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. */