0.8.13.75: MORE MANUALS
[sbcl.git] / doc / internals-notes / threading-specials
index 3e8c597..ff04e16 100644 (file)
@@ -27,7 +27,7 @@ The goals are
         spots.  Global state in closures, etc etc
            
        (4) suggest strategies (e.g. rewrites of affected code, suitable
         spots.  Global state in closures, etc etc
            
        (4) suggest strategies (e.g. rewrites of affected code, suitable
-       locks and lock acquitision/release places) to fix the issues
+       locks and lock acquisition/release places) to fix the issues
        revealed in (2) and (3)
        
        (5) implement same
        revealed in (2) and (3)
        
        (5) implement same
@@ -108,9 +108,13 @@ SB-PCL::*SLOT-NAME-LISTS-OUTER*
 SB-PCL::*THE-WRAPPER-OF-T* 
 SB-PCL::*CREATE-CLASSES-FROM-INTERNAL-STRUCTURE-DEFINITIONS-P* 
 SB-PCL::*WRITERS-FOR-THIS-DEFCLASS*
 SB-PCL::*THE-WRAPPER-OF-T* 
 SB-PCL::*CREATE-CLASSES-FROM-INTERNAL-STRUCTURE-DEFINITIONS-P* 
 SB-PCL::*WRITERS-FOR-THIS-DEFCLASS*
-SB-PCL::*BOOT-STATE* 
+SB-PCL::*BOOT-STATE* ; pseudoconstant in finished lisp (not in bootstrap)
 SB-PCL::*THE-WRAPPER-OF-BIT-VECTOR* 
 SB-PCL::*THE-WRAPPER-OF-BIT-VECTOR* 
-SB-PCL::*EFFECTIVE-METHOD-TABLE* 
+;;; global, frobbed on generic function
+;;; initialization/reinitialization, method precomputation, and
+;;; compute-effective-method.  Potentially unsafe, may be OK because
+;;; of *pcl-lock*, but could easily be liable to races.
+SB-PCL::*EFFECTIVE-METHOD-CACHE* 
 SB-PCL::*THE-WRAPPER-OF-COMPLEX-DOUBLE-FLOAT* 
 SB-PCL::*THE-CLASS-COMPLEX-DOUBLE-FLOAT* 
 SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SINGLE-FLOAT* 
 SB-PCL::*THE-WRAPPER-OF-COMPLEX-DOUBLE-FLOAT* 
 SB-PCL::*THE-CLASS-COMPLEX-DOUBLE-FLOAT* 
 SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SINGLE-FLOAT* 
@@ -595,6 +599,10 @@ Note that the compiler and fasloader are strongly believed not to be
 thread-safe, so there is currently a big lock (*big-compiler-lock*)
 around all calls to the compiler or fasloader
 
 thread-safe, so there is currently a big lock (*big-compiler-lock*)
 around all calls to the compiler or fasloader
 
+Note that INFO functions use a shared cache for the globaldb, and
+don't lock for cache invalidation. This will need fixing when BCL is
+removed.
+
 *COMPILE-FILE-PATHNAME*  
 *COMPILE-FILE-TRUENAME* 
 *COMPILE-PRINT* 
 *COMPILE-FILE-PATHNAME*  
 *COMPILE-FILE-TRUENAME* 
 *COMPILE-PRINT* 
@@ -643,7 +651,7 @@ SB-C::*COMPILER-ERROR-CONTEXT*
 SB-C::*SEEN-BLOCKS* 
 SB-C::*TN-ID* 
 SB-C::*IR1-OPTIMIZE-UNTIL-DONE-EVENT-INFO* 
 SB-C::*SEEN-BLOCKS* 
 SB-C::*TN-ID* 
 SB-C::*IR1-OPTIMIZE-UNTIL-DONE-EVENT-INFO* 
-SB-C::*SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES* 
+SB-C::*SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES*       ; readonly
 SB-C::*NUMBER-CONTINUATIONS* 
 SB-C::*CTYPE-TEST-FUN*
 SB-C::*IGNORE-COST-VOPS* 
 SB-C::*NUMBER-CONTINUATIONS* 
 SB-C::*CTYPE-TEST-FUN*
 SB-C::*IGNORE-COST-VOPS* 
@@ -809,14 +817,16 @@ SB-FASL::FOP-LIST*-3
 
 
 = runtime stuff
 
 
 = runtime stuff
+
+
 SB-VM:*STATIC-SPACE-FREE-POINTER* 
 SB-VM:*INITIAL-DYNAMIC-SPACE-FREE-POINTER* 
 SB-VM:*CURRENT-CATCH-BLOCK* 
 SB-VM:*STATIC-SYMBOLS* 
 SB-VM:*STATIC-SPACE-FREE-POINTER* 
 SB-VM:*INITIAL-DYNAMIC-SPACE-FREE-POINTER* 
 SB-VM:*CURRENT-CATCH-BLOCK* 
 SB-VM:*STATIC-SYMBOLS* 
-SB-VM:*CONTROL-STACK-START* ; bound at thread entry
+SB-VM:*CONTROL-STACK-START* ; safe, bound at thread entry
 SB-VM:*READ-ONLY-SPACE-FREE-POINTER* 
 SB-VM:*READ-ONLY-SPACE-FREE-POINTER* 
-SB-VM:*BINDING-STACK-START* 
-SB-VM:*CONTROL-STACK-END* 
+SB-VM:*BINDING-STACK-START* ; safe, bound at thread entry
+SB-VM:*CONTROL-STACK-END* ; safe, bound at thread entry
 SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK* 
 SB-VM::*FREE-TLS-INDEX* 
 SB-VM::*BINDING-STACK-POINTER* 
 SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK* 
 SB-VM::*FREE-TLS-INDEX* 
 SB-VM::*BINDING-STACK-POINTER* 
@@ -834,6 +844,8 @@ SB-IMPL::*CURRENT-CATCH-BLOCK*
 SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER*
 SB-VM::*ALIEN-STACK* 
 
 SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER*
 SB-VM::*ALIEN-STACK* 
 
+SB-IMPL::*OBJECTS-PENDING-FINALIZATION*  ; needs locking for writers
+
 *GC-NOTIFY-STREAM*   ; going away
 *BEFORE-GC-HOOKS*    ; must be global
 *AFTER-GC-HOOKS*     ; ditto
 *GC-NOTIFY-STREAM*   ; going away
 *BEFORE-GC-HOOKS*    ; must be global
 *AFTER-GC-HOOKS*     ; ditto
@@ -947,20 +959,20 @@ SB-VM::*MAYBE-USE-INLINE-ALLOCATION*
 SB-VM::*SIGNED-IMM-DWORD-PREFILTER-WRAPPER* 
 SB-VM::*IMMEDIATE-TYPES* 
 
 SB-VM::*SIGNED-IMM-DWORD-PREFILTER-WRAPPER* 
 SB-VM::*IMMEDIATE-TYPES* 
 
-SB-KERNEL:*WILD-TYPE* 
+SB-KERNEL:*WILD-TYPE*                                   ; readonly
 SB-KERNEL:*UNPARSE-FUN-TYPE-SIMPLIFY* 
 SB-KERNEL:*CURRENT-LEVEL-IN-PRINT* 
 SB-KERNEL:*UNIVERSAL-FUN-TYPE* 
 SB-KERNEL:*COLD-INIT-COMPLETE-P* 
 SB-KERNEL:*UNPARSE-FUN-TYPE-SIMPLIFY* 
 SB-KERNEL:*CURRENT-LEVEL-IN-PRINT* 
 SB-KERNEL:*UNIVERSAL-FUN-TYPE* 
 SB-KERNEL:*COLD-INIT-COMPLETE-P* 
-SB-KERNEL:*UNIVERSAL-TYPE* 
+SB-KERNEL:*UNIVERSAL-TYPE*                              ; readonly
 SB-KERNEL:*HANDLER-CLUSTERS* 
 SB-KERNEL:*HANDLER-CLUSTERS* 
-SB-KERNEL:*EMPTY-TYPE* 
+SB-KERNEL:*EMPTY-TYPE*                                  ; readonly
 SB-KERNEL:*MAXIMUM-ERROR-DEPTH* 
 SB-KERNEL:*CONDITION-RESTARTS* 
 SB-KERNEL:*TYPE-SYSTEM-INITIALIZED* 
 SB-KERNEL:*RESTART-CLUSTERS* 
 SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR* 
 SB-KERNEL:*MAXIMUM-ERROR-DEPTH* 
 SB-KERNEL:*CONDITION-RESTARTS* 
 SB-KERNEL:*TYPE-SYSTEM-INITIALIZED* 
 SB-KERNEL:*RESTART-CLUSTERS* 
 SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR* 
-SB-KERNEL::*BUILT-IN-CLASS-CODES* 
+SB-KERNEL::*BUILT-IN-CLASS-CODES*                       ; readonly
 SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN* 
 SB-KERNEL::*LAYOUT-CLOS-HASH-RANDOM-STATE* 
 SB-KERNEL::*TYPE-TEST-ORDERING* 
 SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN* 
 SB-KERNEL::*LAYOUT-CLOS-HASH-RANDOM-STATE* 
 SB-KERNEL::*TYPE-TEST-ORDERING* 
@@ -973,28 +985,28 @@ SB-KERNEL::*TYPE-INTERSECTION2-CACHE-VECTOR*
 SB-KERNEL::*COLD-INIT-FORMS*
 SB-KERNEL::*DEFAULT-DEFAULT* 
 SB-KERNEL::*RAW-SLOT-DATA-LIST* 
 SB-KERNEL::*COLD-INIT-FORMS*
 SB-KERNEL::*DEFAULT-DEFAULT* 
 SB-KERNEL::*RAW-SLOT-DATA-LIST* 
-SB-KERNEL::*SPECIALIZED-ARRAY-ELEMENT-TYPES* 
+SB-KERNEL::*SPECIALIZED-ARRAY-ELEMENT-TYPES*            ; readonly
 SB-KERNEL::*DEFSTRUCT-HOOKS* 
 SB-KERNEL::*VALUES-TYPE-UNION-CACHE-VECTOR* 
 SB-KERNEL::*INTERNAL-ERRORS* 
 SB-KERNEL::*VALUES-TYPE-INTERSECTION-CACHE-VECTOR* 
 SB-KERNEL::*FORWARD-REFERENCED-LAYOUTS* 
 SB-KERNEL::*DEFSTRUCT-HOOKS* 
 SB-KERNEL::*VALUES-TYPE-UNION-CACHE-VECTOR* 
 SB-KERNEL::*INTERNAL-ERRORS* 
 SB-KERNEL::*VALUES-TYPE-INTERSECTION-CACHE-VECTOR* 
 SB-KERNEL::*FORWARD-REFERENCED-LAYOUTS* 
-SB-KERNEL::*SYSTEM-LETS* 
+SB-KERNEL::*SYSTEM-LETS*                                ; bound
 SB-KERNEL::*%COERCE-TO-VALUES-CACHE-VECTOR* 
 SB-KERNEL::*IGNORABLE-VARS*
 SB-KERNEL::*%COERCE-TO-VALUES-CACHE-VECTOR* 
 SB-KERNEL::*IGNORABLE-VARS*
-SB-KERNEL::*ENV-VAR* 
+SB-KERNEL::*ENV-VAR*                                    ; bound
 SB-KERNEL::|*%%MAKE-UNION-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*CSUBTYPEP-CACHE-VECTOR* 
 SB-KERNEL::*EMPTY-CONDITION-SLOT* 
 SB-KERNEL::*TYPE-UNION2-CACHE-VECTOR* 
 SB-KERNEL::*TYPE-CLASS-FUN-SLOTS* 
 SB-KERNEL::|*%%MAKE-UNION-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*CSUBTYPEP-CACHE-VECTOR* 
 SB-KERNEL::*EMPTY-CONDITION-SLOT* 
 SB-KERNEL::*TYPE-UNION2-CACHE-VECTOR* 
 SB-KERNEL::*TYPE-CLASS-FUN-SLOTS* 
-SB-KERNEL::*ARG-TESTS* 
-SB-KERNEL::*USER-LETS* 
+SB-KERNEL::*ARG-TESTS*                                  ; bound
+SB-KERNEL::*USER-LETS*                                  ; bound
 SB-KERNEL::|*%%MAKE-ARRAY-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*FINDING-NAME* 
 SB-KERNEL::*TYPE-CLASSES* 
 SB-KERNEL::*VALUES-SPECIFIER-TYPE-CACHE-VECTOR* 
 SB-KERNEL::|*%%MAKE-ARRAY-TYPE-cached-CACHE-VECTOR*| 
 SB-KERNEL::*FINDING-NAME* 
 SB-KERNEL::*TYPE-CLASSES* 
 SB-KERNEL::*VALUES-SPECIFIER-TYPE-CACHE-VECTOR* 
-SB-KERNEL::*FLOAT-FORMATS* 
+SB-KERNEL::*FLOAT-FORMATS*                              ; readonly
 SB-KERNEL::*INTERNAL-ERROR-ARGS*
 SB-KERNEL::*DEF!STRUCT-SUPERTYPE* 
 SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR* 
 SB-KERNEL::*INTERNAL-ERROR-ARGS*
 SB-KERNEL::*DEF!STRUCT-SUPERTYPE* 
 SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR* 
@@ -1013,7 +1025,7 @@ SB-IMPL::*HANDLERS-INSTALLED*
 SB-IMPL::*READ-FROM-STRING-SPARES* 
 SB-IMPL::*HASH-TABLE-TESTS* 
 SB-IMPL::*ATTRIBUTE-NAMES* 
 SB-IMPL::*READ-FROM-STRING-SPARES* 
 SB-IMPL::*HASH-TABLE-TESTS* 
 SB-IMPL::*ATTRIBUTE-NAMES* 
-SB-IMPL::*DAYS-BEFORE-MONTH* 
+SB-IMPL::*DAYS-BEFORE-MONTH*                            ; readonly
 SB-IMPL::*CHARACTER-ATTRIBUTES* 
 SB-IMPL::*UNIX-HOST* 
 SB-IMPL::*DESCRIPTOR-HANDLERS* 
 SB-IMPL::*CHARACTER-ATTRIBUTES* 
 SB-IMPL::*UNIX-HOST* 
 SB-IMPL::*DESCRIPTOR-HANDLERS* 
@@ -1021,12 +1033,11 @@ SB-IMPL::*STRING-OUTPUT-STREAMS*
 SB-IMPL::*CLOSE-ON-ERROR* 
 SB-IMPL::*INTEGER-READER-SAFE-DIGITS* 
 SB-IMPL::*TIMEZONE-TABLE* 
 SB-IMPL::*CLOSE-ON-ERROR* 
 SB-IMPL::*INTEGER-READER-SAFE-DIGITS* 
 SB-IMPL::*TIMEZONE-TABLE* 
-SB-IMPL::*BQ-COMMA-FLAG* 
+SB-IMPL::*BQ-COMMA-FLAG*                                ; readonly
 SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
 SB-IMPL::*MERGE-SORT-TEMP-VECTOR* 
 SB-IMPL::*PROFILE-HASH-CACHE* 
 SB-IMPL::*FIXNUM-POWER--1* 
 SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
 SB-IMPL::*MERGE-SORT-TEMP-VECTOR* 
 SB-IMPL::*PROFILE-HASH-CACHE* 
 SB-IMPL::*FIXNUM-POWER--1* 
-SB-IMPL::*OBJECTS-PENDING-FINALIZATION* 
 SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE*
 SB-IMPL::*SOFTWARE-INTERRUPT-VECTOR*        ; suspect unused
 SB-IMPL::*INSPECT-UNBOUND-OBJECT-MARKER* 
 SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE*
 SB-IMPL::*SOFTWARE-INTERRUPT-VECTOR*        ; suspect unused
 SB-IMPL::*INSPECT-UNBOUND-OBJECT-MARKER* 
@@ -1037,17 +1048,17 @@ SB-IMPL::*CLOSE-IN-PARENT*
 SB-IMPL::*IN-COMPILATION-UNIT*
 SB-IMPL::*CIRCULARITY-HASH-TABLE* 
 SB-IMPL::*LOAD-PRINT-STUFF*
 SB-IMPL::*IN-COMPILATION-UNIT*
 SB-IMPL::*CIRCULARITY-HASH-TABLE* 
 SB-IMPL::*LOAD-PRINT-STUFF*
-SB-IMPL::*ZAP-ARRAY-DATA-TEMP* 
+SB-IMPL::*ZAP-ARRAY-DATA-TEMP*       ; FIXME: ADJUST-ARRAY non-threadsafe
 SB-IMPL::*ACTIVE-PROCESSES* 
 SB-IMPL::*SHARP-SHARP-ALIST*     
 SB-IMPL::*BASE-POWER* 
 SB-IMPL::*LOGICAL-PATHNAME-DEFAULTS* 
 SB-IMPL::*AVAILABLE-BUFFERS* 
 SB-IMPL::*ACTIVE-PROCESSES* 
 SB-IMPL::*SHARP-SHARP-ALIST*     
 SB-IMPL::*BASE-POWER* 
 SB-IMPL::*LOGICAL-PATHNAME-DEFAULTS* 
 SB-IMPL::*AVAILABLE-BUFFERS* 
-SB-IMPL::*BQ-DOT-FLAG* 
+SB-IMPL::*BQ-DOT-FLAG*                          ; readonly
 SB-IMPL::*CIRCULARITY-COUNTER* 
 SB-IMPL::*DIGITS* 
 SB-IMPL::*CIRCULARITY-COUNTER* 
 SB-IMPL::*DIGITS* 
-SB-IMPL::*PREVIOUS-READTABLE-CASE* 
-SB-IMPL::*BQ-VECTOR-FLAG* 
+SB-IMPL::*PREVIOUS-READTABLE-CASE* ; FIXME: printer not threadsafe
+SB-IMPL::*BQ-VECTOR-FLAG*                       ; readonly
 SB-IMPL::*ABBREV-WEEKDAY-TABLE* 
 SB-IMPL::*LOGICAL-HOSTS* 
 SB-IMPL::*PACKAGE-NAMES* 
 SB-IMPL::*ABBREV-WEEKDAY-TABLE* 
 SB-IMPL::*LOGICAL-HOSTS* 
 SB-IMPL::*PACKAGE-NAMES* 
@@ -1059,8 +1070,8 @@ SB-IMPL::*VALID-FUN-NAMES-ALIST*
 SB-IMPL::*PERIODIC-POLLING-FUNCTION* 
 SB-IMPL::*ABORTED-COMPILATION-UNIT-COUNT*
 SB-IMPL::*LONG-WEEKDAY-TABLE* 
 SB-IMPL::*PERIODIC-POLLING-FUNCTION* 
 SB-IMPL::*ABORTED-COMPILATION-UNIT-COUNT*
 SB-IMPL::*LONG-WEEKDAY-TABLE* 
-SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* 
-SB-IMPL::*BACKQUOTE-COUNT* 
+SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* ; FIXME: printer not threadsafe
+SB-IMPL::*BACKQUOTE-COUNT*                      ; bound
 SB-IMPL::*DIGIT-BASES* 
 SB-IMPL::*PREVIOUS-DRIBBLE-STREAMS* 
 SB-IMPL::*MAX-EVENT-TO-USEC* 
 SB-IMPL::*DIGIT-BASES* 
 SB-IMPL::*PREVIOUS-DRIBBLE-STREAMS* 
 SB-IMPL::*MAX-EVENT-TO-USEC* 
@@ -1071,12 +1082,12 @@ SB-IMPL::*LONG-MONTH-TABLE*
 SB-IMPL::*OLD-PACKAGE* 
 SB-IMPL::*INTEGER-READER-BASE-POWER* 
 SB-IMPL::*ERROR-THROW-UP-COUNT* 
 SB-IMPL::*OLD-PACKAGE* 
 SB-IMPL::*INTEGER-READER-BASE-POWER* 
 SB-IMPL::*ERROR-THROW-UP-COUNT* 
-SB-IMPL::*BQ-AT-FLAG* 
+SB-IMPL::*BQ-AT-FLAG*                           ; readonly
 SB-IMPL::*MACHINE-VERSION*   ; unset/unbound ?  are we using this?
 SB-IMPL::*IGNORE-WILDCARDS* 
 SB-IMPL::*INCH-PTR* 
 SB-IMPL::*SHARP-EQUAL-ALIST* 
 SB-IMPL::*MACHINE-VERSION*   ; unset/unbound ?  are we using this?
 SB-IMPL::*IGNORE-WILDCARDS* 
 SB-IMPL::*INCH-PTR* 
 SB-IMPL::*SHARP-EQUAL-ALIST* 
-SB-IMPL::*PREVIOUS-CASE* 
+SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe
 
 *INLINE-EXPANSION-LIMIT* 
 *DERIVE-FUNCTION-TYPES* 
 
 *INLINE-EXPANSION-LIMIT* 
 *DERIVE-FUNCTION-TYPES* 
@@ -1091,11 +1102,8 @@ SB-IMPL::*PREVIOUS-CASE*
 *MACROEXPAND-HOOK* 
 *RANDOM-STATE* 
 
 *MACROEXPAND-HOOK* 
 *RANDOM-STATE* 
 
-SB-BIGNUM::*TRUNCATE-Y*
-SB-BIGNUM::*TRUNCATE-X*
-
-SB-INT:*CL-PACKAGE* 
-SB-INT:*KEYWORD-PACKAGE* 
+SB-INT:*CL-PACKAGE*                     ; readonly
+SB-INT:*KEYWORD-PACKAGE*                ; readonly
 SB-INT:*SETF-FDEFINITION-HOOK* 
 SB-INT:*DEFAULT-INIT-CHAR-FORM* 
 SB-INT:*EOF-OBJECT* 
 SB-INT:*SETF-FDEFINITION-HOOK* 
 SB-INT:*DEFAULT-INIT-CHAR-FORM* 
 SB-INT:*EOF-OBJECT*