X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Falloc.c;h=121a40b2c8e000bb9e78ef916fd2f9082498e7c7;hb=860543cc7ba0266e41e1d41ac9b6a208f3795f1a;hp=01354b421c738d57dff263002a4501b834530bb0;hpb=3bb2fb5b9ecdeebecaded4ac6e5af0f653be8867;p=sbcl.git diff --git a/src/runtime/alloc.c b/src/runtime/alloc.c index 01354b4..121a40b 100644 --- a/src/runtime/alloc.c +++ b/src/runtime/alloc.c @@ -23,12 +23,11 @@ #include "alloc.h" #include "globals.h" #include "gc.h" -#include "genesis/static-symbols.h" +#include "thread.h" #include "genesis/vector.h" #include "genesis/cons.h" #include "genesis/bignum.h" #include "genesis/sap.h" -#include "genesis/symbol.h" #define GET_FREE_POINTER() dynamic_space_free_pointer #define SET_FREE_POINTER(new_value) \ @@ -45,11 +44,12 @@ lispobj * pa_alloc(int bytes) { lispobj *result=0; - SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(0)); - SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(1)); + struct thread *th=arch_os_get_current_thread(); + SetSymbolValue(PSEUDO_ATOMIC_INTERRUPTED, make_fixnum(0),th); + SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(1),th); result=alloc(bytes); - SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(0)); - if (SymbolValue(PSEUDO_ATOMIC_INTERRUPTED)) + SetSymbolValue(PSEUDO_ATOMIC_ATOMIC, make_fixnum(0),th); + if (SymbolValue(PSEUDO_ATOMIC_INTERRUPTED,th)) /* even if we gc at this point, the new allocation will be * protected from being moved, because result is on the c stack * and points to it */