X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc.c;h=693eb9559a0877cc92c298e65dfc0613f0d7ebb8;hb=94ac5b7c3ff37850210b6fc9a7593cf1c5752993;hp=06b8d2664aee3a3fc7d8ccbb7c5aaeef3efdcb5e;hpb=68fd2d2dd6f265669a8957accd8a33e62786a97e;p=sbcl.git diff --git a/src/runtime/gc.c b/src/runtime/gc.c index 06b8d26..693eb95 100644 --- a/src/runtime/gc.c +++ b/src/runtime/gc.c @@ -28,9 +28,8 @@ #include "interr.h" /* So you need to debug? */ -#define PRINTNOISE -#define DEBUG_SPACE_PREDICATES #if 0 +#define PRINTNOISE #define DEBUG_SPACE_PREDICATES #define DEBUG_SCAVENGE_VERBOSE #define DEBUG_COPY_VERBOSE @@ -511,7 +510,9 @@ scavenge_interrupt_context(os_context_t *context) #ifdef ARCH_HAS_NPC_REGISTER unsigned long npc_code_offset; #endif +#ifdef DEBUG_SCAVENGE_VERBOSE fprintf(stderr, "Scavenging interrupt context at 0x%x\n",context); +#endif /* Find the LIP's register pair and calculate its offset */ /* before we scavenge the context. */ #ifdef reg_LIP @@ -535,7 +536,7 @@ scavenge_interrupt_context(os_context_t *context) } } } -#endif reg_LIP +#endif /* reg_LIP */ /* Compute the PC's offset from the start of the CODE */ /* register. */ @@ -574,7 +575,7 @@ scavenge_interrupt_context(os_context_t *context) /* Fix the LIP */ *os_context_register_addr(context, reg_LIP) = *os_context_register_addr(context, lip_register_pair) + lip_offset; -#endif reg_LIP +#endif /* reg_LIP */ /* Fix the PC if it was in from space */ if (from_space_p(*os_context_pc_addr(context))) @@ -603,7 +604,9 @@ void scavenge_interrupt_contexts(void) index = fixnum_value(SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX)); +#ifdef DEBUG_SCAVENGE_VERBOSE fprintf(stderr, "%d interrupt contexts to scan\n",index); +#endif for (i = 0; i < index; i++) { context = lisp_interrupt_contexts[i]; scavenge_interrupt_context(context); @@ -2250,10 +2253,10 @@ gc_init(void) void set_auto_gc_trigger(os_vm_size_t dynamic_usage) { - os_vm_address_t addr=(os_vm_address_t)current_dynamic_space + - dynamic_usage; - long length = - DYNAMIC_SPACE_SIZE + (os_vm_address_t)current_dynamic_space - addr; + os_vm_address_t addr=(os_vm_address_t)current_dynamic_space + + dynamic_usage; + + long length = DYNAMIC_SPACE_SIZE - dynamic_usage; if (addr < (os_vm_address_t)dynamic_space_free_pointer) { fprintf(stderr, @@ -2261,13 +2264,13 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage) (unsigned int)dynamic_usage, (os_vm_address_t)dynamic_space_free_pointer - (os_vm_address_t)current_dynamic_space); - return; + lose("lost"); } else if (length < 0) { fprintf(stderr, "set_auto_gc_trigger: tried to set gc trigger too high! (%p)\n", dynamic_usage); - return; + lose("lost"); } addr=os_round_up_to_page(addr);