X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=b76218db3d2c0069c4bea8bc1733dd623bf4b6aa;hb=1a405defbd26ca767e71494b67127fcc00a8af12;hp=aad791548198dccadd3b0f23fa592dc7679591d9;hpb=a208de2a9ab6a63c27f3e6c291fea9f7c4d774a1;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index aad7915..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* @@ -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 @@ -961,12 +965,12 @@ SB-KERNEL:*CURRENT-LEVEL-IN-PRINT* SB-KERNEL:*UNIVERSAL-FUN-TYPE* SB-KERNEL:*COLD-INIT-COMPLETE-P* SB-KERNEL:*UNIVERSAL-TYPE* ; readonly -SB-KERNEL:*HANDLER-CLUSTERS* +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* ; readonly SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN* @@ -1008,10 +1012,10 @@ 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* @@ -1031,7 +1035,7 @@ SB-IMPL::*INTEGER-READER-SAFE-DIGITS* SB-IMPL::*TIMEZONE-TABLE* 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,7 +1048,7 @@ 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* @@ -1053,7 +1057,7 @@ SB-IMPL::*AVAILABLE-BUFFERS* SB-IMPL::*BQ-DOT-FLAG* ; readonly SB-IMPL::*CIRCULARITY-COUNTER* SB-IMPL::*DIGITS* -SB-IMPL::*PREVIOUS-READTABLE-CASE* +SB-IMPL::*PREVIOUS-READTABLE-CASE* ; FIXME: printer not threadsafe SB-IMPL::*BQ-VECTOR-FLAG* ; readonly SB-IMPL::*ABBREV-WEEKDAY-TABLE* SB-IMPL::*LOGICAL-HOSTS* @@ -1066,14 +1070,14 @@ 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::*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* @@ -1081,9 +1085,9 @@ SB-IMPL::*ERROR-THROW-UP-COUNT* 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,9 +1102,6 @@ SB-IMPL::*PREVIOUS-CASE* *MACROEXPAND-HOOK* *RANDOM-STATE* -SB-BIGNUM::*TRUNCATE-Y* -SB-BIGNUM::*TRUNCATE-X* - SB-INT:*CL-PACKAGE* ; readonly SB-INT:*KEYWORD-PACKAGE* ; readonly SB-INT:*SETF-FDEFINITION-HOOK*