X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fcheneygc.c;h=2ba625077e16a06eeadc7ed1a8f878615970ee5f;hb=c1c2f11c297774cd7f0f48baeaa7631fec155405;hp=db74f54e621a8a1c084eebaec6eaa6a366e91d97;hpb=216de219be8457625914aea1cefe08225a608ecd;p=sbcl.git diff --git a/src/runtime/cheneygc.c b/src/runtime/cheneygc.c index db74f54..2ba6250 100644 --- a/src/runtime/cheneygc.c +++ b/src/runtime/cheneygc.c @@ -87,7 +87,7 @@ zero_stack(void) void * -gc_general_alloc(long bytes, int unboxed_p, int quick_p) { +gc_general_alloc(long bytes, int page_type_flag, int quick_p) { lispobj *new=new_space_free_pointer; new_space_free_pointer+=(bytes/N_WORD_BYTES); return new; @@ -239,6 +239,10 @@ collect_garbage(generation_index_t ignore) /* Maybe FIXME: it's possible that we could significantly reduce * RSS by zeroing the from_space or madvise(MADV_DONTNEED) or * similar os-dependent tricks here */ +#ifdef LISP_FEATURE_HPUX + /* hpux cant handle unmapping areas that are not 100% mapped */ + clear_auto_gc_trigger(); +#endif os_zero((os_vm_address_t) from_space, (os_vm_size_t) dynamic_space_size); @@ -337,9 +341,9 @@ scavenge_interrupt_context(os_context_t *context) 0x7FFFFFFFFFFFFFFF on 64-bit platforms */ lip_offset = (((unsigned long)1) << (N_WORD_BITS - 1)) - 1; lip_register_pair = -1; - for (i = 0; i < (sizeof(boxed_registers) / sizeof(int)); i++) { + for (i = 0; i < (int)(sizeof(boxed_registers) / sizeof(int)); i++) { unsigned long reg; - long offset; + unsigned long offset; int index; index = boxed_registers[i]; @@ -372,7 +376,7 @@ scavenge_interrupt_context(os_context_t *context) #endif /* Scavenge all boxed registers in the context. */ - for (i = 0; i < (sizeof(boxed_registers) / sizeof(int)); i++) { + for (i = 0; i < (int)(sizeof(boxed_registers) / sizeof(int)); i++) { int index; lispobj foo; @@ -593,7 +597,7 @@ void set_auto_gc_trigger(os_vm_size_t dynamic_usage) lose("set_auto_gc_trigger: tried to set gc trigger too high! (0x%08lx)\n", (unsigned long)dynamic_usage); -#if defined(SUNOS) || defined(SOLARIS) +#if defined(SUNOS) || defined(SOLARIS) || defined(LISP_FEATURE_HPUX) os_invalidate(addr, length); #else os_protect(addr, length, 0); @@ -613,7 +617,7 @@ void clear_auto_gc_trigger(void) addr = (os_vm_address_t)current_auto_gc_trigger; length = dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr; -#if defined(SUNOS) || defined(SOLARIS) +#if defined(SUNOS) || defined(SOLARIS) || defined(LISP_FEATURE_HPUX) /* don't want to force whole space into swapping mode... */ os_validate(addr, length); #else