projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.19.16: derive the type of (AREF (THE STRING X) Y) as CHARACTER
[sbcl.git]
/
doc
/
internals-notes
/
threading-specials
diff --git
a/doc/internals-notes/threading-specials
b/doc/internals-notes/threading-specials
index
d27b248
..
73f5f06
100644
(file)
--- 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
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
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
(3) anything else that comes to mind as potential trouble
spots. Global state in closures, etc etc
@@
-109,6
+108,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.
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*
read-only & safe:
SB-PCL::*BUILT-IN-TYPEP-COST*
SB-PCL::*CACHE-EXPAND-THRESHOLD*
@@
-130,6
+132,10
@@
bound & safe:
SB-PCL::*ALLOW-FORWARD-REFERENCED-CLASSES-IN-CPL-P*
SB-PCL::*IN-OBSOLETE-INSTANCE-TRAP*
SB-PCL::*PRECOMPILING-LAP*
SB-PCL::*ALLOW-FORWARD-REFERENCED-CLASSES-IN-CPL-P*
SB-PCL::*IN-OBSOLETE-INSTANCE-TRAP*
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*
believed protected by the compiler-lock:
SB-PCL::*ALL-CTORS*
@@
-138,11
+144,9
@@
believed protected by the compiler-lock:
SB-PCL::*VAR-DECLARATIONS-WITHOUT-ARG*
potentially unsafe:
SB-PCL::*VAR-DECLARATIONS-WITHOUT-ARG*
potentially unsafe:
- SB-PCL::*CACHE-MISS-VALUES-STACK*
SB-PCL::*CLASS-EQ-SPECIALIZER-METHODS*
SB-PCL::*EFFECTIVE-METHOD-CACHE*
SB-PCL::*EQL-SPECIALIZER-METHODS*
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::*METHOD-FUNCTION-PLIST*
SB-PCL::*PV-KEY-TO-PV-TABLE-TABLE*
SB-PCL::*PV-TABLE-CACHE-UPDATE-INFO*
@@
-186,7
+190,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::*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::*GLOBAL-EFFECTIVE-METHOD-GENSYMS*
SB-PCL::*IN-GF-ARG-INFO-P*
SB-PCL::*IN-PRECOMPUTE-EFFECTIVE-METHODS-P*
@@
-205,7
+208,6
@@
SB-PCL::*OPTIMIZE-SPEED*
SB-PCL::*PCL-CLASS-BOOT*
SB-PCL::*PCL-LOCK* ; protecting the rest
SB-PCL::*PCL-PACKAGE*
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-PCL::*RAISE-METATYPES-TO-CLASS-P*
SB-PCL::*READERS-FOR-THIS-DEFCLASS*
SB-PCL::*REBOUND-EFFECTIVE-METHOD-GENSYMS*
@@
-415,7
+417,6
@@
SB-DEBUG::*DEBUG-LOOP-FUN*
SB-DEBUG::*NESTED-DEBUG-CONDITION*
SB-DEBUG::*STEP-BREAKPOINTS*
SB-DEBUG::*DEBUG-RESTARTS*
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-DEBUG::*BREAKPOINTS*
SB-DEBUG::*TRACED-FUNS*
SB-DEBUG::*DEBUG-COMMANDS*
@@
-432,7
+433,6
@@
SB-DI::*PARSING-BUFFER*
SB-DI::*IR1-BLOCK-DEBUG-BLOCK*
SB-DI::*OTHER-PARSING-BUFFER*
SB-DI::*COMPILED-DEBUG-FUNS*
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*
SB-DI::*COMPONENT-BREAKPOINT-OFFSETS*
SB-DI::*FUN-END-COOKIES*
SB-DI::*FORM-NUMBER-CIRCULARITY-TABLE*
@@
-539,13
+539,10
@@
SB-THREAD::*BACKGROUND-THREADS-WAIT-FOR-DEBUGGER* ; intentionally global
*PRINT-LINES*
*PRINT-ESCAPE*
*PRINT-LEVEL*
*PRINT-LINES*
*PRINT-ESCAPE*
*PRINT-LEVEL*
-*ERROR-PRINT-LENGTH*
-*ERROR-PRINT-LINES*
*READ-EVAL*
*PRINT-ESCAPE*
*TRACE-OUTPUT*
SB-IMPL::*INSPECT-LENGTH*
*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-IMPL::*DRIBBLE-STREAM* ; what to do with dribble in threaded lisp?
SB-IMPL::*HELP-FOR-INSPECT* ; read-only
*PRINT-ARRAY*
@@
-701,7
+698,6
@@
SB-C::*BLOCK-COMPILE-ARG*
SB-C::*COMPILER-ERROR-PRINT-LENGTH*
SB-C::*CONTINUATION-NUMBER*
SB-C::*PREV-SEGMENT*
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-C::*CONTROL-DELETED-BLOCK-EVENT-INFO*
SB-C::*ALLOW-DEBUG-CATCH-TAG*
SB-C::*ID-LABELS*
@@
-806,7
+802,6
@@
SB-FASL::*CURRENT-FOP-TABLE-SIZE*
SB-FASL::*FOP-STACK-POINTER-ON-ENTRY*
SB-FASL::*FREE-FOP-TABLES*
SB-FASL::*LOAD-SYMBOL-BUFFER*
SB-FASL::*FOP-STACK-POINTER-ON-ENTRY*
SB-FASL::*FREE-FOP-TABLES*
SB-FASL::*LOAD-SYMBOL-BUFFER*
-SB-FASL::*CURRENT-CATCH-BLOCK*
SB-FASL::*FASL-HEADER-STRING-START-STRING*
SB-FASL::DUMP-FOP*
SB-FASL::FOP-LIST*
SB-FASL::*FASL-HEADER-STRING-START-STRING*
SB-FASL::DUMP-FOP*
SB-FASL::FOP-LIST*
@@
-848,18
+843,13
@@
SB-KERNEL:*NEED-TO-COLLECT-GARBAGE*
SB-KERNEL:*ALREADY-MAYBE-GCING*
SB-KERNEL:*PSEUDO-ATOMIC-INTERRUPTED* ; bound
SB-KERNEL::*GC-TRIGGER* ; I think this is dead, check
SB-KERNEL:*ALREADY-MAYBE-GCING*
SB-KERNEL:*PSEUDO-ATOMIC-INTERRUPTED* ; bound
SB-KERNEL::*GC-TRIGGER* ; I think this is dead, check
-SB-IMPL::*CURRENT-UNWIND-PROTECT-BLOCK*
-SB-IMPL::*CURRENT-CATCH-BLOCK*
+SB-IMPL::*CURRENT-UNWIND-PROTECT-BLOCK* ; thread-local
SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER*
SB-VM::*ALIEN-STACK* ; bound in create_thread_struct()
SB-IMPL::*OBJECTS-PENDING-FINALIZATION* ; needs locking for writers
SB-IMPL::*READ-ONLY-SPACE-FREE-POINTER*
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*
*GC-RUN-TIME*
SB-INT:*N-BYTES-FREED-OR-PURIFIED*
@@
-920,15
+910,6
@@
SB-KERNEL::*BUILT-IN-CLASSES*
= dead stuff
= 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
------------------------------------------------------------------------
= unclassified
@@
-1044,7
+1025,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::*TIMEZONE-TABLE*
SB-IMPL::*BQ-COMMA-FLAG* ; readonly
SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
-SB-IMPL::*MERGE-SORT-TEMP-VECTOR* ; FIXME: SORT non-threadsafe, non-reentrant
+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::*PROFILE-HASH-CACHE*
SB-IMPL::*FIXNUM-POWER--1*
SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE*
@@
-1057,7
+1038,7
@@
SB-IMPL::*CLOSE-IN-PARENT*
SB-IMPL::*IN-COMPILATION-UNIT*
SB-IMPL::*CIRCULARITY-HASH-TABLE*
SB-IMPL::*LOAD-PRINT-STUFF*
SB-IMPL::*IN-COMPILATION-UNIT*
SB-IMPL::*CIRCULARITY-HASH-TABLE*
SB-IMPL::*LOAD-PRINT-STUFF*
-SB-IMPL::*ZAP-ARRAY-DATA-TEMP* ; FIXME: ADJUST-ARRAY non-threadsafe
+SB-IMPL::*ZAP-ARRAY-DATA-TEMP* ; safe, allocated per-thread
SB-IMPL::*ACTIVE-PROCESSES*
SB-IMPL::*SHARP-SHARP-ALIST*
SB-IMPL::*BASE-POWER*
SB-IMPL::*ACTIVE-PROCESSES*
SB-IMPL::*SHARP-SHARP-ALIST*
SB-IMPL::*BASE-POWER*