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
= 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*
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*
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*
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*
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*
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*
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*
*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*
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*
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*
= 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
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*
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*