X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=4b4cfd3856fac06f84f5fc91b784ffe53dfac632;hb=c0f9314af1b6f7aa67e6c5db523d6ddef735986c;hp=70e6c77c2f8d136cbaa82c13290b7f43958a4ae1;hpb=888e047a95aac9e3a41c668aeefd9847f0d84cd1;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index 70e6c77..4b4cfd3 100644 --- a/doc/internals-notes/threading-specials +++ b/doc/internals-notes/threading-specials @@ -15,13 +15,12 @@ The goals are When looking at a particular symbol, please annotate it in this file when you figure out what it's for and how it's - changed. To give us some confidence that we have reasonable - coverage, please don't just delete it if it looks ok. Symbols + changed. To give us some confidence that we have reasonable + coverage, please don't just delete it if it looks ok. Symbols shoud only be deleted here if they're obviously not specials at all (e.g. functions with * in their names), or if the same - commit actually rids SBCL of the symbol itself (as we may soon - do for e.g. SB-SYS:*TASK-SELF*). Otherwise, just add a - comment saying "read-only" or "unused" or whatever. + commit actually rids SBCL of the symbol itself. Otherwise, + just add a comment saying "read-only" or "unused" or whatever. (3) anything else that comes to mind as potential trouble spots. Global state in closures, etc etc @@ -98,16 +97,11 @@ SB-LOOP::*LOOP-BIND-STACK* = PCL -The PCL authors thought a bit about thread safety, adding -(without-interrupts ...) in some places to protect critical forms. -We've implemented their without-interrupts macro as an acquitision of -*pcl-lock*, so we hope they've done it properly. +Critical parts of PCL are protected by *world-lock* (particularly +those dealing with class graph changes), and some with finer-grained locks. -Largish parts of PCL should also be protected by the compiler lock, -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::*CLASSOID-CELLS* read-only & safe: SB-PCL::*BUILT-IN-TYPEP-COST* @@ -132,6 +126,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 +139,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 +182,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 +200,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 +409,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 +425,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* @@ -698,7 +690,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* @@ -911,15 +902,6 @@ SB-KERNEL::*BUILT-IN-CLASSES* = dead stuff -SB-SYS:*TASK-NOTIFY* ; unused -SB-SYS:*TASK-SELF* ; unused -SB-SYS:*TASK-DATA* ; unused -SB-SYS:*TYPESCRIPTPORT* ' unused -SB-THREAD::*FOREGROUND-THREAD-STACK* ; unused, I think - - - - ------------------------------------------------------------------------ = unclassified @@ -1035,7 +1017,6 @@ 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* ; safe, allocated per-thread SB-IMPL::*PROFILE-HASH-CACHE* SB-IMPL::*FIXNUM-POWER--1* SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE* @@ -1048,7 +1029,6 @@ 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* ; safe, allocated per-thread SB-IMPL::*ACTIVE-PROCESSES* SB-IMPL::*SHARP-SHARP-ALIST* SB-IMPL::*BASE-POWER*