1.0.5.4: signal handler consing causing GCs
[sbcl.git] / src / runtime / globals.h
index 71f3085..de4b61f 100644 (file)
 
 #include "sbcl.h"
 
+/* Currently threads live only on x86oid platforms, but this thing
+ * cannot ever work with threads, so... */
+#if !defined(LISP_FEATURE_SB_THREAD) && !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
+#define FOREIGN_FUNCTION_CALL_FLAG
+#endif
+
 #ifndef LANGUAGE_ASSEMBLY
+
+#ifdef FOREIGN_FUNCTION_CALL_FLAG
 extern int foreign_function_call_active;
-extern boolean stop_the_world;
+#endif
+
+extern size_t dynamic_space_size;
+
+#ifdef LISP_FEATURE_WIN32
+#define ENVIRON _environ
+#else
+#define ENVIRON environ
+#endif
+extern char **ENVIRON;
 
 #if defined(LISP_FEATURE_SB_THREAD)
 extern pthread_key_t specials;
@@ -34,9 +51,18 @@ extern lispobj *current_control_frame_pointer;
 extern lispobj *current_binding_stack_pointer;
 # endif
 
-# ifndef LISP_FEATURE_GENCGC
-/* Beware! gencgc has also a (non-global) dynamic_space_free_pointer. */
+#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
+/* This is unused on X86 and X86_64, but is used as the global
+ *  allocation pointer by the cheney GC, and, in some instances, as
+ *  the global allocation pointer on PPC/GENCGC. This should probably
+ *  be cleaned up such that it only needs to exist on cheney. At the
+ *  moment, it is also used by the GENCGC, to hold the pseudo_atomic
+ *  bits, and is tightly coupled to reg_ALLOC by the assembly
+ *  routines. */
 extern lispobj *dynamic_space_free_pointer;
+#endif
+
+# ifndef LISP_FEATURE_GENCGC
 extern lispobj *current_auto_gc_trigger;
 # endif
 
@@ -86,7 +112,9 @@ extern void globals_init(void);
 #  define POINTERSIZE 4
 # endif
 
+#ifdef FOREIGN_FUNCTION_CALL_FLAG
 EXTERN(foreign_function_call_active, 4)
+#endif
 
 EXTERN(current_control_stack_pointer, POINTERSIZE)
 EXTERN(current_control_frame_pointer, POINTERSIZE)