X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fglobals.c;h=2b397cb52376c85437c52c0ffcbc3dd95f30fb29;hb=b28aadc5bd34a0d9fa0ff15c52b2b4164d955831;hp=6152e258d2bab91ba9c2be2e535e0b91d4ce7496;hpb=d2e48d5a1805e3fb98268473a71aff38d8fd9d0b;p=sbcl.git diff --git a/src/runtime/globals.c b/src/runtime/globals.c index 6152e25..2b397cb 100644 --- a/src/runtime/globals.c +++ b/src/runtime/globals.c @@ -17,12 +17,14 @@ #include #include -#include "runtime.h" #include "sbcl.h" +#include "runtime.h" #include "globals.h" #include "validate.h" +#ifdef FOREIGN_FUNCTION_CALL_FLAG int foreign_function_call_active; +#endif lispobj *current_control_stack_pointer; lispobj *current_control_frame_pointer; @@ -32,7 +34,7 @@ lispobj *current_binding_stack_pointer; /* ALLOCATION_POINTER is x86 or RT. Anyone want to do an RT port? */ -#ifndef ALLOCATION_POINTER +# if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64) /* The Object Formerly Known As current_dynamic_space_free_pointer */ lispobj *dynamic_space_free_pointer; #endif @@ -41,34 +43,35 @@ lispobj *dynamic_space_free_pointer; lispobj *current_auto_gc_trigger; #endif +#ifdef LISP_FEATURE_SB_THREAD +boolean stop_the_world=0; +#endif + /* For copying GCs, this points to the start of the dynamic space * currently in use (that will become the from_space when the next GC * is done). For the GENCGC, it always points to DYNAMIC_SPACE_START. */ lispobj *current_dynamic_space; +#if defined(LISP_FEATURE_SB_THREAD) +pthread_key_t specials=0; +#endif + void globals_init(void) { /* Space, stack, and free pointer vars are initialized by * validate() and coreparse(). */ current_control_frame_pointer = (lispobj *)0; -#ifndef LISP_FEATURE_GENCGC +#ifndef LISP_FEATURE_GENCGC /* no GC trigger yet */ current_auto_gc_trigger = NULL; #endif - /* Set foreign function call active. */ +#ifdef FOREIGN_FUNCTION_CALL_FLAG foreign_function_call_active = 1; - - /* Initialize the current Lisp state. */ -#ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD - current_control_stack_pointer = (lispobj *)CONTROL_STACK_END; -#else - current_control_stack_pointer = (lispobj *)CONTROL_STACK_START; #endif - current_control_frame_pointer = (lispobj *)0; -#ifndef BINDING_STACK_POINTER - current_binding_stack_pointer = native_pointer(BINDING_STACK_START); +#ifdef LISP_FEATURE_SB_THREAD + pthread_key_create(&specials,0); #endif }