X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=ff04e16e43bf779698b8e17a9835899a997a1c7b;hb=e583bce51c0f1b1b453b73a4edf3c35d0185e66f;hp=3e8c597654014ff22a01f37b5a86e4977df6a3b8;hpb=2378b4fe567a8fea78b1e4915b9497d8c18ca92f;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index 3e8c597..ff04e16 100644 --- a/doc/internals-notes/threading-specials +++ b/doc/internals-notes/threading-specials @@ -27,7 +27,7 @@ The goals are 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 @@ -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::*BOOT-STATE* +SB-PCL::*BOOT-STATE* ; pseudoconstant in finished lisp (not in bootstrap) 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* @@ -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 +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* @@ -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::*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* @@ -809,14 +817,16 @@ SB-FASL::FOP-LIST*-3 = 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:*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:*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* @@ -834,6 +844,8 @@ SB-IMPL::*CURRENT-CATCH-BLOCK* 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 @@ -947,20 +959,20 @@ SB-VM::*MAYBE-USE-INLINE-ALLOCATION* 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:*UNIVERSAL-TYPE* +SB-KERNEL:*UNIVERSAL-TYPE* ; readonly 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::*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* @@ -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::*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::*SYSTEM-LETS* +SB-KERNEL::*SYSTEM-LETS* ; bound 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::*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::*FLOAT-FORMATS* +SB-KERNEL::*FLOAT-FORMATS* ; readonly 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::*DAYS-BEFORE-MONTH* +SB-IMPL::*DAYS-BEFORE-MONTH* ; readonly 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::*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::*OBJECTS-PENDING-FINALIZATION* 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::*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::*BQ-DOT-FLAG* +SB-IMPL::*BQ-DOT-FLAG* ; readonly 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* @@ -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::*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* @@ -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::*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::*PREVIOUS-CASE* +SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe *INLINE-EXPANSION-LIMIT* *DERIVE-FUNCTION-TYPES* @@ -1091,11 +1102,8 @@ SB-IMPL::*PREVIOUS-CASE* *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*