X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=705832becf1160a04f3d3a9322da9a1b8ccc29ba;hb=e119a2f79cf36039a39996f5490934b4d927529a;hp=9b67b2a52d25cc83a109cf44e06f79a5c24ba8eb;hpb=60ce532301c8f4b7ed289d049717ee16639bc4d4;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index 9b67b2a..705832b 100644 --- a/doc/internals-notes/threading-specials +++ b/doc/internals-notes/threading-specials @@ -109,6 +109,9 @@ but sometimes it can be hard to tell... The most suspicious parts should probably be tested by asserting at various sites that the *PCL-LOCK* is held. +accesses locked with a nice granularity + SB-PCL::*FIND-CLASS* + read-only & safe: SB-PCL::*BUILT-IN-TYPEP-COST* SB-PCL::*CACHE-EXPAND-THRESHOLD* @@ -132,6 +135,9 @@ bound & safe: SB-PCL::*PRECOMPILING-LAP* SB-PCL::*CACHE-MISS-VALUES-STACK* +protected by PCL-LOCK: + SB-PCL::*PREVIOUS-NWRAPPERS* + believed protected by the compiler-lock: SB-PCL::*ALL-CTORS* SB-PCL::*FGENS* @@ -142,7 +148,6 @@ potentially unsafe: SB-PCL::*CLASS-EQ-SPECIALIZER-METHODS* SB-PCL::*EFFECTIVE-METHOD-CACHE* SB-PCL::*EQL-SPECIALIZER-METHODS* - SB-PCL::*FREE-HASH-TABLES* SB-PCL::*METHOD-FUNCTION-PLIST* SB-PCL::*PV-KEY-TO-PV-TABLE-TABLE* SB-PCL::*PV-TABLE-CACHE-UPDATE-INFO* @@ -186,7 +191,6 @@ SB-PCL::*EMIT-FUNCTION-P* SB-PCL::*ENABLE-DFUN-CONSTRUCTOR-CACHING* SB-PCL::*ENABLE-EMF-CALL-TRACING-P* SB-PCL::*EQL-SPECIALIZER-TABLE* -SB-PCL::*FIND-CLASS* SB-PCL::*GLOBAL-EFFECTIVE-METHOD-GENSYMS* SB-PCL::*IN-GF-ARG-INFO-P* SB-PCL::*IN-PRECOMPUTE-EFFECTIVE-METHODS-P* @@ -205,7 +209,6 @@ SB-PCL::*OPTIMIZE-SPEED* SB-PCL::*PCL-CLASS-BOOT* SB-PCL::*PCL-LOCK* ; protecting the rest SB-PCL::*PCL-PACKAGE* -SB-PCL::*PREVIOUS-NWRAPPERS* SB-PCL::*RAISE-METATYPES-TO-CLASS-P* SB-PCL::*READERS-FOR-THIS-DEFCLASS* SB-PCL::*REBOUND-EFFECTIVE-METHOD-GENSYMS* @@ -415,7 +418,6 @@ SB-DEBUG::*DEBUG-LOOP-FUN* SB-DEBUG::*NESTED-DEBUG-CONDITION* SB-DEBUG::*STEP-BREAKPOINTS* SB-DEBUG::*DEBUG-RESTARTS* -SB-DEBUG::*CACHED-FORM-NUMBER-TRANSLATIONS* SB-DEBUG::*BREAKPOINTS* SB-DEBUG::*TRACED-FUNS* SB-DEBUG::*DEBUG-COMMANDS* @@ -432,7 +434,6 @@ SB-DI::*PARSING-BUFFER* SB-DI::*IR1-BLOCK-DEBUG-BLOCK* SB-DI::*OTHER-PARSING-BUFFER* SB-DI::*COMPILED-DEBUG-FUNS* -SB-DI::*FORM-NUMBER-TEMP* SB-DI::*COMPONENT-BREAKPOINT-OFFSETS* SB-DI::*FUN-END-COOKIES* SB-DI::*FORM-NUMBER-CIRCULARITY-TABLE* @@ -539,13 +540,10 @@ SB-THREAD::*BACKGROUND-THREADS-WAIT-FOR-DEBUGGER* ; intentionally global *PRINT-LINES* *PRINT-ESCAPE* *PRINT-LEVEL* -*ERROR-PRINT-LENGTH* -*ERROR-PRINT-LINES* *READ-EVAL* *PRINT-ESCAPE* *TRACE-OUTPUT* SB-IMPL::*INSPECT-LENGTH* -*ERROR-PRINT-LEVEL* SB-IMPL::*DRIBBLE-STREAM* ; what to do with dribble in threaded lisp? SB-IMPL::*HELP-FOR-INSPECT* ; read-only *PRINT-ARRAY* @@ -701,7 +699,6 @@ SB-C::*BLOCK-COMPILE-ARG* SB-C::*COMPILER-ERROR-PRINT-LENGTH* SB-C::*CONTINUATION-NUMBER* SB-C::*PREV-SEGMENT* -SB-C::*ALL-COMPONENTS* SB-C::*CONTROL-DELETED-BLOCK-EVENT-INFO* SB-C::*ALLOW-DEBUG-CATCH-TAG* SB-C::*ID-LABELS* @@ -853,11 +850,7 @@ SB-VM::*ALIEN-STACK* ; bound in create_thread_struct() 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-AFTER* ; going away -*GC-NOTIFY-BEFORE* ; going away +*AFTER-GC-HOOKS* ; must be global *GC-RUN-TIME* SB-INT:*N-BYTES-FREED-OR-PURIFIED*