/* it's possible that signals are blocked already if this was called
* from a signal handler (e.g. with the sigsegv gc_trigger stuff) */
/* it's possible that signals are blocked already if this was called
* from a signal handler (e.g. with the sigsegv gc_trigger stuff) */
- sigemptyset(&tmp);
- sigaddset_blockable(&tmp);
- thread_sigmask(SIG_BLOCK, &tmp, &old);
+ block_blockable_signals(0, &old);
/* 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 */
/* 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 */
os_zero((os_vm_address_t) from_space,
(os_vm_size_t) dynamic_space_size);
os_zero((os_vm_address_t) from_space,
(os_vm_size_t) dynamic_space_size);
lose("set_auto_gc_trigger: tried to set gc trigger too high! (0x%08lx)\n",
(unsigned long)dynamic_usage);
lose("set_auto_gc_trigger: tried to set gc trigger too high! (0x%08lx)\n",
(unsigned long)dynamic_usage);
os_invalidate(addr, length);
#else
os_protect(addr, length, 0);
os_invalidate(addr, length);
#else
os_protect(addr, length, 0);
addr = (os_vm_address_t)current_auto_gc_trigger;
length = dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr;
addr = (os_vm_address_t)current_auto_gc_trigger;
length = dynamic_space_size + (os_vm_address_t)current_dynamic_space - addr;
/* don't want to force whole space into swapping mode... */
os_validate(addr, length);
#else
/* don't want to force whole space into swapping mode... */
os_validate(addr, length);
#else
* the PA section */
SetSymbolValue(GC_PENDING,T,thread);
arch_set_pseudo_atomic_interrupted(context);
* the PA section */
SetSymbolValue(GC_PENDING,T,thread);
arch_set_pseudo_atomic_interrupted(context);