projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.4.85: small PCL cleanups and thread-safety notes
[sbcl.git]
/
doc
/
internals-notes
/
threading-specials
diff --git
a/doc/internals-notes/threading-specials
b/doc/internals-notes/threading-specials
index
d27b248
..
914e83f
100644
(file)
--- a/
doc/internals-notes/threading-specials
+++ b/
doc/internals-notes/threading-specials
@@
-130,6
+130,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
+142,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*
@@
-205,7
+207,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*
@@
-539,13
+540,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
+699,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
+803,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
+844,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*
@@
-1044,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::*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
+1048,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*