X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgencgc.c;h=2a6d7ea924b576430a86bbab9f771cda425c5dda;hb=d25e3478acccec70402ff32554669a982be8e281;hp=c87669e37fc67876aab0a708202b852ab4d5db1b;hpb=4bf2de6a2adff75459cf218c8bff67f6cdb91211;p=sbcl.git diff --git a/src/runtime/gencgc.c b/src/runtime/gencgc.c index c87669e..2a6d7ea 100644 --- a/src/runtime/gencgc.c +++ b/src/runtime/gencgc.c @@ -4726,10 +4726,14 @@ general_alloc_internal(long nbytes, int page_type_flag, struct alloc_region *reg if (SymbolValue(GC_INHIBIT,thread) == NIL) { set_pseudo_atomic_interrupted(thread); #ifdef LISP_FEATURE_PPC - /* PPC calls alloc() from a trap, look up the most - * recent one and frob that. */ - maybe_save_gc_mask_and_block_deferrables - (get_interrupt_context_for_thread(thread)); + /* PPC calls alloc() from a trap or from pa_alloc(), + * look up the most context if it's from a trap. */ + { + os_context_t *context = + thread->interrupt_data->allocation_trap_context; + maybe_save_gc_mask_and_block_deferrables + (context ? os_context_sigmask_addr(context) : NULL); + } #else maybe_save_gc_mask_and_block_deferrables(NULL); #endif