X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=b76218db3d2c0069c4bea8bc1733dd623bf4b6aa;hb=04ae4aeb2cd1f95e0648d179c0d22ebf2148fc99;hp=5be6a67d4a17ca9c647639c31193367631b6f9c3;hpb=b7eed59f1877263e1af5ad80299e641e8276f77d;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index 5be6a67..b76218d 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 @@ -599,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* @@ -647,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* @@ -817,13 +821,13 @@ SB-FASL::FOP-LIST*-3 SB-VM:*STATIC-SPACE-FREE-POINTER* SB-VM:*INITIAL-DYNAMIC-SPACE-FREE-POINTER* -SB-VM:*CURRENT-CATCH-BLOCK* +SB-VM:*CURRENT-CATCH-BLOCK* ; bound at thread entry (in C) SB-VM:*STATIC-SYMBOLS* SB-VM:*CONTROL-STACK-START* ; safe, bound at thread entry SB-VM:*READ-ONLY-SPACE-FREE-POINTER* 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::*CURRENT-UNWIND-PROTECT-BLOCK* ; bound at thread entry (in C) SB-VM::*FREE-TLS-INDEX* SB-VM::*BINDING-STACK-POINTER* SB-VM::*ALLOCATION-POINTER* ; may be mostly unused ? @@ -838,7 +842,7 @@ SB-KERNEL::*GC-TRIGGER* ; I think this is dead, check SB-IMPL::*CURRENT-UNWIND-PROTECT-BLOCK* SB-IMPL::*CURRENT-CATCH-BLOCK* SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER* -SB-VM::*ALIEN-STACK* +SB-VM::*ALIEN-STACK* ; bound in create_thread_struct() SB-IMPL::*OBJECTS-PENDING-FINALIZATION* ; needs locking for writers @@ -955,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:*HANDLER-CLUSTERS* -SB-KERNEL:*EMPTY-TYPE* +SB-KERNEL:*UNIVERSAL-TYPE* ; readonly +SB-KERNEL:*HANDLER-CLUSTERS* ; bound per-thread +SB-KERNEL:*EMPTY-TYPE* ; readonly SB-KERNEL:*MAXIMUM-ERROR-DEPTH* -SB-KERNEL:*CONDITION-RESTARTS* +SB-KERNEL:*CONDITION-RESTARTS* ; bound per-thread SB-KERNEL:*TYPE-SYSTEM-INITIALIZED* -SB-KERNEL:*RESTART-CLUSTERS* +SB-KERNEL:*RESTART-CLUSTERS* ; bound per-thread 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* @@ -981,37 +985,37 @@ 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* SB-KERNEL::*CTYPE-OF-CACHE-VECTOR* -SB-IMPL::*READ-BUFFER* +SB-IMPL::*READ-BUFFER* ; FIXME: non-threadsafe SB-IMPL::*SECONDARY-ATTRIBUTE-TABLE* SB-IMPL::*STANDARD-READTABLE* -SB-IMPL::*OUCH-PTR* +SB-IMPL::*OUCH-PTR* ; FIXME: non-threadsafe SB-IMPL::*ERROR-ERROR-DEPTH* SB-IMPL::*CURRENT-ERROR-DEPTH* SB-IMPL::*INTERNAL-REAL-TIME-BASE-SECONDS* @@ -1021,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* @@ -1029,9 +1033,9 @@ 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::*MERGE-SORT-TEMP-VECTOR* ; FIXME: SORT non-threadsafe, non-reentrant SB-IMPL::*PROFILE-HASH-CACHE* SB-IMPL::*FIXNUM-POWER--1* SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE* @@ -1044,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* @@ -1066,24 +1070,24 @@ 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* SB-IMPL::*INPUT-ROUTINES* SB-IMPL::*MAX-EVENT-TO-SEC* -SB-IMPL::*READ-BUFFER-LENGTH* +SB-IMPL::*READ-BUFFER-LENGTH* ; FIXME: not threadsafe 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::*INCH-PTR* ; FIXME: non-threadsafe SB-IMPL::*SHARP-EQUAL-ALIST* -SB-IMPL::*PREVIOUS-CASE* +SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe *INLINE-EXPANSION-LIMIT* *DERIVE-FUNCTION-TYPES* @@ -1098,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*