lispobj *end = start + n_words;
lispobj *object_ptr;
long n_words_scavenged;
- for (object_ptr = start;
+ for (object_ptr = start;
object_ptr < end;
object_ptr += n_words_scavenged) {
(scavtab[widetag_of(object)])(object_ptr, object);
}
}
- gc_assert(object_ptr == end);
+ gc_assert_verbose(object_ptr == end, "Final object pointer %p, end %p\n",
+ object_ptr, end);
}
static lispobj trans_fun_header(lispobj object); /* forward decls */
fheaderl = fheaderp->next;
prev_pointer = &nfheaderp->next;
}
+#ifdef LISP_FEATURE_GENCGC
+ /* Cheneygc doesn't need this os_flush_icache, it flushes the whole
+ spaces once when all copying is done. */
os_flush_icache((os_vm_address_t) (((long *)new_code) + nheader_words),
ncode_words * sizeof(long));
-#ifdef LISP_FEATURE_GENCGC
+
gencgc_apply_code_fixups(code, new_code);
#endif
return new_code;
entry_point != NIL;
entry_point = function_ptr->next) {
- gc_assert(is_lisp_pointer(entry_point));
+ gc_assert_verbose(is_lisp_pointer(entry_point), "Entry point %lx\n",
+ (long)entry_point);
function_ptr = (struct simple_fun *) native_pointer(entry_point);
gc_assert(widetag_of(function_ptr->header)==SIMPLE_FUN_HEADER_WIDETAG);
static long
scav_return_pc_header(lispobj *where, lispobj object)
{
- lose("attempted to scavenge a return PC header where=0x%08x object=0x%08x",
+ lose("attempted to scavenge a return PC header where=0x%08x object=0x%08x\n",
(unsigned long) where,
(unsigned long) object);
return 0; /* bogus return value to satisfy static type checking */
static long
scav_fun_header(lispobj *where, lispobj object)
{
- lose("attempted to scavenge a function header where=0x%08x object=0x%08x",
+ lose("attempted to scavenge a function header where=0x%08x object=0x%08x\n",
(unsigned long) where,
(unsigned long) object);
return 0; /* bogus return value to satisfy static type checking */
static lispobj
trans_immediate(lispobj object)
{
- lose("trying to transport an immediate");
+ lose("trying to transport an immediate\n");
return NIL; /* bogus return value to satisfy static type checking */
}
gc_assert(widetag_of(wp->header)==WEAK_POINTER_WIDETAG);
/* Push the weak pointer onto the list of weak pointers. */
- wp->next = LOW_WORD(weak_pointers);
+ wp->next = (struct weak_pointer *)LOW_WORD(weak_pointers);
weak_pointers = wp;
#endif
return copy;
static long
scav_lose(lispobj *where, lispobj object)
{
- lose("no scavenge function for object 0x%08x (widetag 0x%x)",
+ lose("no scavenge function for object 0x%08x (widetag 0x%x)\n",
(unsigned long)object,
widetag_of(*(lispobj*)native_pointer(object)));
static lispobj
trans_lose(lispobj object)
{
- lose("no transport function for object 0x%08x (widetag 0x%x)",
+ lose("no transport function for object 0x%08x (widetag 0x%x)\n",
(unsigned long)object,
widetag_of(*(lispobj*)native_pointer(object)));
return NIL; /* bogus return value to satisfy static type checking */
static long
size_lose(lispobj *where)
{
- lose("no size function for object at 0x%08x (widetag 0x%x)",
+ lose("no size function for object at 0x%08x (widetag 0x%x)\n",
(unsigned long)where,
widetag_of(LOW_WORD(where)));
return 1; /* bogus return value to satisfy static type checking */