/* Scan the weak pointers. */
#ifdef PRINTNOISE
+ printf("Scanning weak hash tables ...\n");
+#endif
+ scan_weak_hash_tables();
+
+ /* Scan the weak pointers. */
+#ifdef PRINTNOISE
printf("Scanning weak pointers ...\n");
#endif
scan_weak_pointers();
-
/* Flip spaces. */
#ifdef PRINTNOISE
printf("Flipping spaces ...\n");
* RSS by zeroing the from_space or madvise(MADV_DONTNEED) or
* similar os-dependent tricks here */
os_zero((os_vm_address_t) from_space,
- (os_vm_size_t) DYNAMIC_SPACE_SIZE);
+ (os_vm_size_t) dynamic_space_size);
current_dynamic_space = new_space;
dynamic_space_free_pointer = new_space_free_pointer;
here,new_space_free_pointer); */
next = new_space_free_pointer;
scavenge(here, next - here);
+ scav_weak_hash_tables();
here = next;
}
/* printf("done with newspace\n"); */
}
\f
-/* vector-like objects */
-
-static long
-scav_vector(lispobj *where, lispobj object)
-{
- if (HeaderValue(object) == subtype_VectorValidHashing) {
- *where =
- (subtype_VectorMustRehash<<N_WIDETAG_BITS) | SIMPLE_VECTOR_WIDETAG;
- }
-
- return 1;
-}
-
-\f
/* weak pointers */
#define WEAK_POINTER_NWORDS \
gc_init(void)
{
gc_init_tables();
- scavtab[SIMPLE_VECTOR_WIDETAG] = scav_vector;
scavtab[WEAK_POINTER_WIDETAG] = scav_weak_pointer;
}
(unsigned long)((os_vm_address_t)dynamic_space_free_pointer
- (os_vm_address_t)current_dynamic_space));
- length = os_trunc_size_to_page(DYNAMIC_SPACE_SIZE - dynamic_usage);
+ length = os_trunc_size_to_page(dynamic_space_size - dynamic_usage);
if (length < 0)
lose("set_auto_gc_trigger: tried to set gc trigger too high! (0x%08lx)\n",
(unsigned long)dynamic_usage);
return;
addr = (os_vm_address_t)current_auto_gc_trigger;
- length = DYNAMIC_SPACE_SIZE + (os_vm_address_t)current_dynamic_space - addr;
+ length = dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr;
#if defined(SUNOS) || defined(SOLARIS)
/* don't want to force whole space into swapping mode... */