X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fglobals.c;h=099acd26326711398a23b940e1172d7675317737;hb=743831e679b673a5680a0afd8402911516bf50e2;hp=691bfb12247a230d5d949b896200f044fb7a3315;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/runtime/globals.c b/src/runtime/globals.c index 691bfb1..099acd2 100644 --- a/src/runtime/globals.c +++ b/src/runtime/globals.c @@ -13,17 +13,18 @@ * files for more information. */ -/* - * $Header$ - */ - #include +#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; @@ -31,46 +32,42 @@ lispobj *current_control_frame_pointer; lispobj *current_binding_stack_pointer; #endif -lispobj *read_only_space; -lispobj *static_space; -lispobj *dynamic_0_space; -lispobj *dynamic_1_space; -lispobj *control_stack; -#ifdef __i386__ -lispobj *control_stack_end; -#endif -lispobj *binding_stack; +/* ALLOCATION_POINTER is x86 or RT. Anyone want to do an RT port? */ -lispobj *current_dynamic_space; -#ifndef ALLOCATION_POINTER -lispobj *current_dynamic_space_free_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 -#ifndef INTERNAL_GC_TRIGGER + +#ifndef LISP_FEATURE_GENCGC /* GENCGC has its own way to record trigger */ lispobj *current_auto_gc_trigger; #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) && !defined(LISP_FEATURE_GCC_TLS) +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 INTERNAL_GC_TRIGGER +#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. */ -#ifndef __i386__ - current_control_stack_pointer = control_stack; -#else - current_control_stack_pointer = control_stack_end; #endif - current_control_frame_pointer = (lispobj *)0; -#ifndef BINDING_STACK_POINTER - current_binding_stack_pointer = binding_stack; +#if defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_GCC_TLS) + pthread_key_create(&specials,0); #endif }