X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=b76218db3d2c0069c4bea8bc1733dd623bf4b6aa;hb=04ae4aeb2cd1f95e0648d179c0d22ebf2148fc99;hp=adfe42c355710d0e88fc21307b5a0f516a3cff60;hpb=0728e7b99692f32f23ba63be90c56f4a3358e692;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index adfe42c..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* @@ -1073,7 +1077,7 @@ 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,7 +1085,7 @@ 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* ; FIXME: printer not threadsafe @@ -1098,9 +1102,6 @@ SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe *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*