spots. Global state in closures, etc etc
(4) suggest strategies (e.g. rewrites of affected code, suitable
- locks and lock acquitision/release places) to fix the issues
+ locks and lock acquisition/release places) to fix the issues
revealed in (2) and (3)
(5) implement same
We've implemented their without-interrupts macro as an acquitision of
*pcl-lock*, so we hope they've done it properly.
-SB-PCL::*STRUCTURE-TYPEP-COST*
-SB-PCL::*SLOT-NAME-LISTS-OUTER*
-SB-PCL::*THE-WRAPPER-OF-T*
-SB-PCL::*CREATE-CLASSES-FROM-INTERNAL-STRUCTURE-DEFINITIONS-P*
-SB-PCL::*WRITERS-FOR-THIS-DEFCLASS*
-SB-PCL::*BOOT-STATE* ; pseudoconstant in finished lisp (not in bootstrap)
-SB-PCL::*THE-WRAPPER-OF-BIT-VECTOR*
+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.
+
+read-only & safe:
+ SB-PCL::*BUILT-IN-TYPEP-COST*
+ SB-PCL::*CACHE-EXPAND-THRESHOLD*
+ SB-PCL::*CACHE-LOOKUP-COST*
+ SB-PCL::*CASE-TABLE-LIMIT*
+ SB-PCL::*CHECK-CACHE-P*
+ SB-PCL::*COMPUTE-STD-CPL-CLASS->ENTRY-TABLE-SIZE*
+ SB-PCL::*EQ-CASE-TABLE-LIMIT*
+ SB-PCL::*NON-BUILT-IN-TYPEP-COST*
+ SB-PCL::*NON-VAR-DECLARATIONS*
+ SB-PCL::*SECONDARY-DFUN-CALL-COST*
+ SB-PCL::*SGF-WRAPPER*
+ SB-PCL::*STRUCTURE-TYPEP-COST*
+ SB-PCL::*UNSPECIFIC-ARG*
+ SB-PCL::*VAR-DECLARATIONS-WITH-ARG*
+ SB-PCL::*WRAPPER-OF-COST*
+
+bound & safe:
+ 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*
+
+believed protected by the compiler-lock:
+ SB-PCL::*ALL-CTORS*
+ SB-PCL::*FGENS*
+ SB-PCL::*SGF-DFUN-STATE-INDEX*
+ SB-PCL::*VAR-DECLARATIONS-WITHOUT-ARG*
+
+potentially unsafe:
+ SB-PCL::*CLASS-EQ-SPECIALIZER-METHODS*
+ SB-PCL::*EFFECTIVE-METHOD-CACHE*
+ SB-PCL::*EQL-SPECIALIZER-METHODS*
+ SB-PCL::*METHOD-FUNCTION-PLIST*
+ SB-PCL::*PV-KEY-TO-PV-TABLE-TABLE*
+ SB-PCL::*PV-TABLE-CACHE-UPDATE-INFO*
+ SB-PCL::*PVS*
+ SB-PCL::*SLOT-NAME-LISTS-INNER*
+ SB-PCL::*SLOT-NAME-LISTS-OUTER*
+ SB-PCL::*PREVIOUS-NWRAPPERS*
+
+debugging / profiling -- low relevance:
+ SB-PCL::*DFUN-COUNT*
+ SB-PCL::*ALLOW-EMF-CALL-TRACING-P*
+
+build-options and bootstrap machinery -- irrelevant for user-code:
+ SB-PCL::*ALLOW-EXPERIMENTAL-SPECIALIZERS-P*
+ SB-PCL::*BOOT-STATE* ; pseudoconstant in finished lisp (not in bootstrap)
+ SB-PCL::*BUILT-IN-CLASS-SYMBOLS*
+ SB-PCL::*BUILT-IN-CLASSES*
+ SB-PCL::*BUILT-IN-WRAPPER-SYMBOLS*
+ SB-PCL::*CHECKING-OR-CACHING-LIST*
+
;;; global, frobbed on generic function
;;; initialization/reinitialization, method precomputation, and
;;; compute-effective-method. Potentially unsafe, may be OK because
;;; of *pcl-lock*, but could easily be liable to races.
-SB-PCL::*EFFECTIVE-METHOD-CACHE*
-SB-PCL::*THE-WRAPPER-OF-COMPLEX-DOUBLE-FLOAT*
-SB-PCL::*THE-CLASS-COMPLEX-DOUBLE-FLOAT*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SINGLE-FLOAT*
-SB-PCL::*CACHE-LOOKUP-COST*
-SB-PCL::*SLOT-NAME-LISTS-INNER*
-SB-PCL::*MF2P*
-SB-PCL::*THE-CLASS-RATIONAL*
-SB-PCL::WRAPPER-CLASS*
-SB-PCL::*PREVIOUS-NWRAPPERS*
-SB-PCL::*MF1*
-SB-PCL::*THE-CLASS-STANDARD-OBJECT*
-SB-PCL::*THE-CLASS-CONDITION-DIRECT-SLOT-DEFINITION*
-SB-PCL::*THE-CLASS-RATIO*
-SB-PCL::*SHOW-MAKE-UNORDERED-METHODS-EMF-CALLS*
-SB-PCL::*ALL-CTORS*
-SB-PCL::*SUBTYPEP
-SB-PCL::*THE-WRAPPER-OF-LRA*
-SB-PCL::*INITFUNCTIONS-FOR-THIS-DEFCLASS*
-SB-PCL::*STANDARD-SLOT-VALUE-USING-CLASS-METHOD*
-SB-PCL::*EMPTY-PV*
-SB-PCL::*CACHE-EXPAND-THRESHOLD*
-SB-PCL::*THE-CLASS-INTEGER*
-SB-PCL::*SGF-DFUN-STATE-INDEX*
-SB-PCL::*ALL-PV-TABLE-LIST*
-SB-PCL::*THE-WRAPPER-OF-RANDOM-CLASS*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT*
-SB-PCL::*THE-CLASS-FDEFN*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-32*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-VECTOR*
-SB-PCL::*CHECK-CACHE-P*
-SB-PCL::*SGF-WRAPPER*
+
+SB-PCL::*CONDITION-SETF-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*CONDITION-SLOT-BOUNDP-USING-CLASS-METHOD*
SB-PCL::*CONDITION-SLOT-VALUE-USING-CLASS-METHOD*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-BIT-VECTOR*
-SB-PCL::*THE-CLASS-SPECIALIZER*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT*
-SB-PCL::*THE-CLASS-STANDARD-CLASS*
-SB-PCL::*THE-CLASS-STANDARD-ACCESSOR-METHOD*
-SB-PCL::*THE-CLASS-STANDARD-READER-METHOD*
-SB-PCL::*THE-WRAPPER-OF-DOUBLE-FLOAT*
-SB-PCL::*NON-BUILT-IN-TYPEP-COST*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-8*
-SB-PCL::*THE-CLASS-DOCUMENTATION-MIXIN*
-SB-PCL::*EMF-CALL-TRACE-SIZE*
-SB-PCL::*OLD-C-A-M-GF-METHODS*
-SB-PCL::*EMPTY-CACHE*
-SB-PCL::*THE-WRAPPER-OF-SYMBOL*
-SB-PCL::*THE-CLASS-STANDARD-METHOD-COMBINATION*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-DOUBLE-FLOAT*
-SB-PCL::*THE-CLASS-METHOD*
-SB-PCL::*PRECOMPILING-LAP*
-SB-PCL::*STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD*
-SB-PCL::*ENABLE-DFUN-CONSTRUCTOR-CACHING*
-SB-PCL::*THE-CLASS-CONDITION-EFFECTIVE-SLOT-DEFINITION*
-SB-PCL::*THE-WRAPPER-OF-STRUCTURE-OBJECT*
-SB-PCL::*THE-CLASS-WEAK-POINTER*
-SB-PCL::*STANDARD-SLOT-BOUNDP-USING-CLASS-METHOD*
-SB-PCL::*THE-CLASS-FUNCALLABLE-STANDARD-OBJECT*
-SB-PCL::*VAR-DECLARATIONS-WITH-ARG*
-SB-PCL::*PV-TABLE-CACHE-UPDATE-INFO*
-SB-PCL::*THE-WRAPPER-OF-STRING*
-SB-PCL::*THE-CLASS-CONDITION*
-SB-PCL::*THE-CLASS-PCL-CLASS*
-SB-PCL::*THE-CLASS-CLASS*
-SB-PCL::*PCL-LOCK* ; protecting the rest
+SB-PCL::*CREATE-CLASSES-FROM-INTERNAL-STRUCTURE-DEFINITIONS-P*
+SB-PCL::*DFUN-ARG-SYMBOLS*
+SB-PCL::*DFUN-CONSTRUCTORS*
+SB-PCL::*DFUN-LIST*
+SB-PCL::*DFUN-MISS-GFS-ON-STACK*
+SB-PCL::*EARLY-CLASS-DEFINITIONS*
+SB-PCL::*EARLY-CLASS-PREDICATES*
+SB-PCL::*EARLY-CLASS-SLOTS*
SB-PCL::*EARLY-P*
-SB-PCL::*PCL-CLASS-BOOT*
-SB-PCL::*THE-CLASS-EFFECTIVE-SLOT-DEFINITION*
-SB-PCL::*THE-WRAPPER-OF-CONS*
-SB-PCL::*THE-CLASS-LRA*
-SB-PCL::*THE-CLASS-EQL-SPECIALIZER*
-SB-PCL::*EQL-SPECIALIZER-METHODS*
-SB-PCL::*THE-WRAPPER-OF-FLOAT*
-SB-PCL::*INITIAL-PV-TABLE*
-SB-PCL::*THE-CLASS-COMPLEX-SINGLE-FLOAT*
-SB-PCL::*STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD*
SB-PCL::*EMF-CALL-TRACE*
-SB-PCL::*IN-OBSOLETE-INSTANCE-TRAP*
-SB-PCL::*BUILT-IN-CLASS-SYMBOLS*
-SB-PCL::*FREE-HASH-TABLES*
-SB-PCL::*THE-WRAPPER-OF-WEAK-POINTER*
-SB-PCL::*THE-CLASS-RANDOM-CLASS*
-SB-PCL::*PVS*
-SB-PCL::*THE-WRAPPER-OF-REAL*
-SB-PCL::*LONG-METHOD-COMBINATION-FUNCTIONS*
+SB-PCL::*EMF-CALL-TRACE-INDEX*
+SB-PCL::*EMF-CALL-TRACE-SIZE*
SB-PCL::*EMIT-FUNCTION-P*
-SB-PCL::*THE-CLASS-DOUBLE-FLOAT*
-SB-PCL::*NAME->CLASS->SLOTD-TABLE*
-SB-PCL::*DFUN-COUNT*
-SB-PCL::*COMPUTE-STD-CPL-CLASS->ENTRY-TABLE-SIZE*
-SB-PCL::*THE-CLASS-SYMBOL*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-16*
-SB-PCL::*THE-CLASS-STANDARD-DIRECT-SLOT-DEFINITION*
-SB-PCL::*THE-CLASS-EXACT-CLASS-SPECIALIZER*
-SB-PCL::*THE-CLASS-FLOAT*
-SB-PCL::*THE-CLASS-BASE-CHAR*
-SB-PCL::*PV-KEY-TO-PV-TABLE-TABLE*
-SB-PCL::*THE-CLASS-STD-CLASS*
-SB-PCL::*THE-CLASS-SLOT-OBJECT*
-SB-PCL::*OPTIMIZE-SPEED*
-SB-PCL::*THE-CLASS-STRUCTURE-EFFECTIVE-SLOT-DEFINITION*
-SB-PCL::*VAR-DECLARATIONS-WITHOUT-ARG*
-SB-PCL::*THE-CLASS-INSTANCE*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-4*
-SB-PCL::*THE-CLASS-CONS*
-SB-PCL::*THE-WRAPPER-OF-FIXNUM*
-SB-PCL::*THE-SYSTEM-II-METHOD*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-8*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-16*
-SB-PCL::*THE-WRAPPER-OF-COMPLEX-SINGLE-FLOAT*
-SB-PCL::*THE-WRAPPER-OF-SINGLE-FLOAT*
-SB-PCL::*DFUN-MISS-GFS-ON-STACK*
-SB-PCL::*THE-CLASS-CONDITION-CLASS*
-SB-PCL::*THE-WRAPPER-OF-BIGNUM*
-SB-PCL::*THE-CLASS-SPECIALIZER-WITH-OBJECT*
-SB-PCL::*THE-CLASS-COMPLEX*
-SB-PCL::*THE-WRAPPER-OF-INTEGER*
-SB-PCL::*CONDITION-SLOT-BOUNDP-USING-CLASS-METHOD*
-SB-PCL::*THE-CLASS-CHARACTER*
-SB-PCL::*EARLY-CLASS-DEFINITIONS*
-SB-PCL::*THE-WRAPPER-OF-NULL*
+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::*INITFUNCTIONS-FOR-THIS-DEFCLASS*
SB-PCL::*INTERNAL-PCL-GENERALIZED-FUN-NAME-SYMBOLS*
-SB-PCL::*THE-CLASS-STRUCTURE-CLASS*
-SB-PCL::*UNSPECIFIC-ARG*
-SB-PCL::*SECONDARY-DFUN-CALL-COST*
-SB-PCL::*THE-CLASS-SIMPLE-STRING*
-SB-PCL::*THE-CLASS-STRUCTURE-SLOT-DEFINITION*
-SB-PCL::*METHOD-FUNCTION-PLIST*
-SB-PCL::*STANDARD-METHOD-COMBINATION*
SB-PCL::*LAZY-DFUN-COMPUTE-P*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-8*
-SB-PCL::*THE-CLASS-STRING*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-2*
-SB-PCL::*EQL-SPECIALIZER-TABLE*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT*
-SB-PCL::*BUILT-IN-WRAPPER-SYMBOLS*
-SB-PCL::*THE-CLASS-STREAM*
-SB-PCL::*CLASS-EQ-SPECIALIZER-METHODS*
-SB-PCL::*THE-CLASS-REAL*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-32*
-SB-PCL::*THE-CLASS-SIMPLE-VECTOR*
-SB-PCL::*THE-CLASS-GENERIC-FUNCTION*
-SB-PCL::*STANDARD-SETF-SLOT-VALUE-USING-CLASS-METHOD*
-SB-PCL::*STD-CAM-METHODS*
-SB-PCL::*THE-CLASS-STRUCTURE-DIRECT-SLOT-DEFINITION*
-SB-PCL::*THE-WRAPPER-OF-FDEFN*
-SB-PCL::*THE-WRAPPER-OF-VECTOR*
-SB-PCL::*THE-CLASS-NULL*
+SB-PCL::*LONG-METHOD-COMBINATION-FUNCTIONS*
+SB-PCL::*MINIMUM-CACHE-SIZE-TO-LIST*
+SB-PCL::*NAME->CLASS->SLOTD-TABLE*
+SB-PCL::*NEW-CLASS*
SB-PCL::*NORMALIZE-TYPE
+SB-PCL::*NOT-IN-CACHE*
+SB-PCL::*OLD-C-A-M-GF-METHODS*
+SB-PCL::*OPTIMIZE-CACHE-FUNCTIONS-P*
+SB-PCL::*OPTIMIZE-SPEED*
+SB-PCL::*PCL-CLASS-BOOT*
+SB-PCL::*PCL-LOCK* ; protecting the rest
+SB-PCL::*PCL-PACKAGE*
+SB-PCL::*RAISE-METATYPES-TO-CLASS-P*
+SB-PCL::*READERS-FOR-THIS-DEFCLASS*
SB-PCL::*REBOUND-EFFECTIVE-METHOD-GENSYMS*
-SB-PCL::*THE-CLASS-NUMBER*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-STRING*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-30*
-SB-PCL::*MF2CP*
-SB-PCL::*THE-CLASS-DEPENDENT-UPDATE-MIXIN*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-32*
-SB-PCL::*THE-CLASS-VECTOR*
-SB-PCL::*FIND-CLASS*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-16*
+SB-PCL::*SGF-ARG-INFO-INDEX*
+SB-PCL::*SGF-METHOD-CLASS-INDEX*
+SB-PCL::*SGF-METHODS-INDEX*
+SB-PCL::*SGF-NAME-INDEX*
+SB-PCL::*SGF-SLOTS-INIT*
+SB-PCL::*SHOW-MAKE-UNORDERED-METHODS-EMF-CALLS*
+SB-PCL::*SLOT-NAMES-FOR-THIS-DEFCLASS*
+SB-PCL::*SLOT-VECTOR-SYMBOLS*
+SB-PCL::*STANDARD-CLASSES*
+SB-PCL::*STANDARD-METHOD-COMBINATION*
+SB-PCL::*STANDARD-SETF-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*STANDARD-SLOT-BOUNDP-USING-CLASS-METHOD*
SB-PCL::*STANDARD-SLOT-LOCATIONS*
-SB-PCL::*FGENS*
-SB-PCL::*PCL-PACKAGE*
+SB-PCL::*STANDARD-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*STD-CAM-METHODS*
+SB-PCL::*STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*STRUCTURE-SLOT-BOUNDP-USING-CLASS-METHOD*
+SB-PCL::*STRUCTURE-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*SUBTYPEP
SB-PCL::*THE-CLASS-ARRAY*
-SB-PCL::*CASE-TABLE-LIMIT*
-SB-PCL::*THE-CLASS-METHOD-COMBINATION*
+SB-PCL::*THE-CLASS-BASE-CHAR*
+SB-PCL::*THE-CLASS-BIGNUM*
+SB-PCL::*THE-CLASS-BIT-VECTOR*
+SB-PCL::*THE-CLASS-BUILT-IN-CLASS*
+SB-PCL::*THE-CLASS-CHARACTER*
+SB-PCL::*THE-CLASS-CLASS*
+SB-PCL::*THE-CLASS-CLASS-EQ-SPECIALIZER*
+SB-PCL::*THE-CLASS-CLASS-PROTOTYPE-SPECIALIZER*
+SB-PCL::*THE-CLASS-CODE-COMPONENT*
+SB-PCL::*THE-CLASS-COMPLEX*
+SB-PCL::*THE-CLASS-COMPLEX-DOUBLE-FLOAT*
+SB-PCL::*THE-CLASS-COMPLEX-SINGLE-FLOAT*
+SB-PCL::*THE-CLASS-CONDITION*
+SB-PCL::*THE-CLASS-CONDITION-CLASS*
+SB-PCL::*THE-CLASS-CONDITION-DIRECT-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-CONDITION-EFFECTIVE-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-CONDITION-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-CONS*
+SB-PCL::*THE-CLASS-DEFINITION-SOURCE-MIXIN*
+SB-PCL::*THE-CLASS-DEPENDENT-UPDATE-MIXIN*
SB-PCL::*THE-CLASS-DIRECT-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-DOCUMENTATION-MIXIN*
+SB-PCL::*THE-CLASS-DOUBLE-FLOAT*
+SB-PCL::*THE-CLASS-EFFECTIVE-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-EQL-SPECIALIZER*
+SB-PCL::*THE-CLASS-EXACT-CLASS-SPECIALIZER*
+SB-PCL::*THE-CLASS-FDEFN*
SB-PCL::*THE-CLASS-FIXNUM*
-SB-PCL::*THE-CLASS-STD-OBJECT*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-32*
-SB-PCL::*EARLY-CLASS-PREDICATES*
-SB-PCL::*WRAPPER-OF-COST*
-SB-PCL::*STANDARD-CLASSES*
+SB-PCL::*THE-CLASS-FLOAT*
+SB-PCL::*THE-CLASS-FORWARD-REFERENCED-CLASS*
+SB-PCL::*THE-CLASS-FUNCALLABLE-INSTANCE*
+SB-PCL::*THE-CLASS-FUNCALLABLE-STANDARD-CLASS*
+SB-PCL::*THE-CLASS-FUNCALLABLE-STANDARD-OBJECT*
+SB-PCL::*THE-CLASS-FUNCTION*
+SB-PCL::*THE-CLASS-GENERIC-FUNCTION*
+SB-PCL::*THE-CLASS-INSTANCE*
+SB-PCL::*THE-CLASS-INTEGER*
+SB-PCL::*THE-CLASS-LIST*
SB-PCL::*THE-CLASS-LONG-METHOD-COMBINATION*
-SB-PCL::*READERS-FOR-THIS-DEFCLASS*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-30*
-SB-PCL::*EMF-CALL-TRACE-INDEX*
-SB-PCL::*BUILT-IN-TYPEP-COST*
-SB-PCL::*THE-CLASS-STANDARD-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-LRA*
+SB-PCL::*THE-CLASS-METHOD*
+SB-PCL::*THE-CLASS-METHOD-COMBINATION*
+SB-PCL::*THE-CLASS-NULL*
+SB-PCL::*THE-CLASS-NUMBER*
+SB-PCL::*THE-CLASS-PCL-CLASS*
SB-PCL::*THE-CLASS-PLIST-MIXIN*
-SB-PCL::*CONDITION-SETF-SLOT-VALUE-USING-CLASS-METHOD*
-SB-PCL::*THE-CLASS-BIGNUM*
-SB-PCL::*THE-WRAPPER-OF-CODE-COMPONENT*
-SB-PCL::*THE-ESLOTD-STANDARD-CLASS-SLOTS*
-SB-PCL::*SLOT-NAMES-FOR-THIS-DEFCLASS*
-SB-PCL::*THE-CLASS-FUNCTION*
-SB-PCL::*THE-WRAPPER-OF-SYSTEM-AREA-POINTER*
+SB-PCL::*THE-CLASS-RANDOM-CLASS*
+SB-PCL::*THE-CLASS-RATIO*
+SB-PCL::*THE-CLASS-RATIONAL*
+SB-PCL::*THE-CLASS-REAL*
+SB-PCL::*THE-CLASS-SEQUENCE*
SB-PCL::*THE-CLASS-SIMPLE-ARRAY*
-SB-PCL::*THE-CLASS-STANDARD-EFFECTIVE-SLOT-DEFINITION*
-SB-PCL::*THE-WRAPPER-OF-SEQUENCE*
-SB-PCL::*THE-CLASS-FUNCALLABLE-STANDARD-CLASS*
-SB-PCL::*THE-CLASS-SYSTEM-AREA-POINTER*
-SB-PCL::*THE-WRAPPER-OF-LIST*
-SB-PCL::*THE-CLASS-BUILT-IN-CLASS*
-SB-PCL::*STRUCTURE-SETF-SLOT-VALUE-USING-CLASS-METHOD*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-DOUBLE-FLOAT*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-16*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-30*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-32*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SIGNED-BYTE-8*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SINGLE-FLOAT*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-16*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-2*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-32*
SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-4*
+SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-8*
SB-PCL::*THE-CLASS-SIMPLE-BIT-VECTOR*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT*
-SB-PCL::*GLOBAL-EFFECTIVE-METHOD-GENSYMS*
-SB-PCL::*DFUN-CONSTRUCTORS*
-SB-PCL::*THE-CLASS-CODE-COMPONENT*
+SB-PCL::*THE-CLASS-SIMPLE-STRING*
+SB-PCL::*THE-CLASS-SIMPLE-VECTOR*
+SB-PCL::*THE-CLASS-SINGLE-FLOAT*
+SB-PCL::*THE-CLASS-SLOT-CLASS*
+SB-PCL::*THE-CLASS-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-SLOT-OBJECT*
+SB-PCL::*THE-CLASS-SPECIALIZER*
+SB-PCL::*THE-CLASS-SPECIALIZER-WITH-OBJECT*
+SB-PCL::*THE-CLASS-STANDARD-ACCESSOR-METHOD*
+SB-PCL::*THE-CLASS-STANDARD-BOUNDP-METHOD*
+SB-PCL::*THE-CLASS-STANDARD-CLASS*
+SB-PCL::*THE-CLASS-STANDARD-DIRECT-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-STANDARD-EFFECTIVE-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-STANDARD-GENERIC-FUNCTION*
+SB-PCL::*THE-CLASS-STANDARD-METHOD*
+SB-PCL::*THE-CLASS-STANDARD-METHOD-COMBINATION*
+SB-PCL::*THE-CLASS-STANDARD-OBJECT*
+SB-PCL::*THE-CLASS-STANDARD-READER-METHOD*
+SB-PCL::*THE-CLASS-STANDARD-SLOT-DEFINITION*
SB-PCL::*THE-CLASS-STANDARD-WRITER-METHOD*
-SB-PCL::*NON-VAR-DECLARATIONS*
-SB-PCL::*IN-PRECOMPUTE-EFFECTIVE-METHODS-P*
-SB-PCL::*CHECKING-OR-CACHING-LIST*
-SB-PCL::*THE-CLASS-BIT-VECTOR*
+SB-PCL::*THE-CLASS-STD-CLASS*
+SB-PCL::*THE-CLASS-STD-OBJECT*
+SB-PCL::*THE-CLASS-STREAM*
+SB-PCL::*THE-CLASS-STRING*
+SB-PCL::*THE-CLASS-STRUCTURE-CLASS*
+SB-PCL::*THE-CLASS-STRUCTURE-DIRECT-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-STRUCTURE-EFFECTIVE-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-STRUCTURE-OBJECT*
+SB-PCL::*THE-CLASS-STRUCTURE-SLOT-DEFINITION*
+SB-PCL::*THE-CLASS-SYMBOL*
+SB-PCL::*THE-CLASS-SYSTEM-AREA-POINTER*
+SB-PCL::*THE-CLASS-T*
+SB-PCL::*THE-CLASS-VECTOR*
+SB-PCL::*THE-CLASS-WEAK-POINTER*
+SB-PCL::*THE-ESLOTD-FUNCALLABLE-STANDARD-CLASS-SLOTS*
+SB-PCL::*THE-ESLOTD-STANDARD-CLASS-SLOTS*
+SB-PCL::*THE-SYSTEM-II-METHOD*
+SB-PCL::*THE-SYSTEM-SI-METHOD*
+SB-PCL::*THE-WRAPPER-OF-ARRAY*
+SB-PCL::*THE-WRAPPER-OF-BASE-CHAR*
+SB-PCL::*THE-WRAPPER-OF-BIGNUM*
+SB-PCL::*THE-WRAPPER-OF-BIT-VECTOR*
SB-PCL::*THE-WRAPPER-OF-CHARACTER*
+SB-PCL::*THE-WRAPPER-OF-CODE-COMPONENT*
SB-PCL::*THE-WRAPPER-OF-COMPLEX*
-SB-PCL::*BUILT-IN-CLASSES*
-SB-PCL::*ALLOW-EXPERIMENTAL-SPECIALIZERS-P*
-SB-PCL::*ALLOW-EMF-CALL-TRACING-P*
-SB-PCL::*SGF-METHOD-CLASS-INDEX*
-SB-PCL::*SGF-METHODS-INDEX*
+SB-PCL::*THE-WRAPPER-OF-COMPLEX-DOUBLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-COMPLEX-SINGLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-CONS*
+SB-PCL::*THE-WRAPPER-OF-DOUBLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-FDEFN*
+SB-PCL::*THE-WRAPPER-OF-FIXNUM*
+SB-PCL::*THE-WRAPPER-OF-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-INTEGER*
+SB-PCL::*THE-WRAPPER-OF-LIST*
+SB-PCL::*THE-WRAPPER-OF-LRA*
+SB-PCL::*THE-WRAPPER-OF-NULL*
SB-PCL::*THE-WRAPPER-OF-NUMBER*
+SB-PCL::*THE-WRAPPER-OF-RANDOM-CLASS*
SB-PCL::*THE-WRAPPER-OF-RATIO*
-SB-PCL::*RAISE-METATYPES-TO-CLASS-P*
-SB-PCL::*EARLY-CLASS-SLOTS*
-SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY*
-SB-PCL::*MF1CP*
SB-PCL::*THE-WRAPPER-OF-RATIONAL*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-16*
-SB-PCL::*THE-WRAPPER-OF-ARRAY*
-SB-PCL::*THE-ESLOTD-FUNCALLABLE-STANDARD-CLASS-SLOTS*
-SB-PCL::*THE-CLASS-SLOT-CLASS*
-SB-PCL::*THE-CLASS-SLOT-DEFINITION*
-SB-PCL::*OPTIMIZE-CACHE-FUNCTIONS-P*
-SB-PCL::*MF2*
-SB-PCL::*THE-CLASS-SEQUENCE*
-SB-PCL::*EQ-CASE-TABLE-LIMIT*
-SB-PCL::*THE-CLASS-STRUCTURE-OBJECT*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-DOUBLE-FLOAT*
-SB-PCL::*SLOT-VECTOR-SYMBOLS*
-SB-PCL::*ENABLE-EMF-CALL-TRACING-P*
-SB-PCL::*THE-CLASS-SINGLE-FLOAT*
-SB-PCL::*THE-SYSTEM-SI-METHOD*
-SB-PCL::*THE-WRAPPER-OF-BASE-CHAR*
-SB-PCL::*THE-CLASS-CONDITION-SLOT-DEFINITION*
-SB-PCL::*DFUN-LIST*
-SB-PCL::*THE-CLASS-STANDARD-METHOD*
-SB-PCL::*DFUN-ARG-SYMBOLS*
-SB-PCL::*NOT-IN-CACHE*
-SB-PCL::*THE-CLASS-STANDARD-BOUNDP-METHOD*
-SB-PCL::*THE-CLASS-LIST*
-SB-PCL::*NEW-CLASS*
+SB-PCL::*THE-WRAPPER-OF-REAL*
+SB-PCL::*THE-WRAPPER-OF-SEQUENCE*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-COMPLEX-DOUBLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-COMPLEX-SINGLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-DOUBLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-16*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-30*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-32*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SIGNED-BYTE-8*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-SINGLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-16*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-2*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-32*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-4*
SB-PCL::*THE-WRAPPER-OF-SIMPLE-ARRAY-UNSIGNED-BYTE-8*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-UNSIGNED-BYTE-2*
-SB-PCL::*THE-CLASS-CLASS-EQ-SPECIALIZER*
-SB-PCL::*THE-CLASS-FUNCALLABLE-INSTANCE*
-SB-PCL::*IN-GF-ARG-INFO-P*
-SB-PCL::*THE-CLASS-STANDARD-GENERIC-FUNCTION*
-SB-PCL::*SGF-ARG-INFO-INDEX*
-SB-PCL::*ALLOW-FORWARD-REFERENCED-CLASSES-IN-CPL-P*
-SB-PCL::*THE-CLASS-FORWARD-REFERENCED-CLASS*
-SB-PCL::*THE-CLASS-SIMPLE-ARRAY-SINGLE-FLOAT*
-SB-PCL::*MF1P*
-SB-PCL::*MINIMUM-CACHE-SIZE-TO-LIST*
-SB-PCL::*THE-CLASS-CLASS-PROTOTYPE-SPECIALIZER*
-SB-PCL::*THE-CLASS-T*
-SB-PCL::*CACHE-MISS-VALUES-STACK*
-SB-PCL::*SGF-NAME-INDEX*
-SB-PCL::*THE-CLASS-DEFINITION-SOURCE-MIXIN*
-SB-PCL::*SGF-SLOTS-INIT*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-BIT-VECTOR*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-STRING*
+SB-PCL::*THE-WRAPPER-OF-SIMPLE-VECTOR*
+SB-PCL::*THE-WRAPPER-OF-SINGLE-FLOAT*
+SB-PCL::*THE-WRAPPER-OF-STRING*
+SB-PCL::*THE-WRAPPER-OF-STRUCTURE-OBJECT*
+SB-PCL::*THE-WRAPPER-OF-SYMBOL*
+SB-PCL::*THE-WRAPPER-OF-SYSTEM-AREA-POINTER*
+SB-PCL::*THE-WRAPPER-OF-T*
+SB-PCL::*THE-WRAPPER-OF-VECTOR*
+SB-PCL::*THE-WRAPPER-OF-WEAK-POINTER*
+SB-PCL::*WRITERS-FOR-THIS-DEFCLASS*
+SB-PCL::WRAPPER-CLASS*
= debugger
*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*
thread-safe, so there is currently a big lock (*big-compiler-lock*)
around all calls to the compiler or fasloader
+Note that INFO functions use a shared cache for the globaldb, and
+don't lock for cache invalidation. This will need fixing when BCL is
+removed.
+
*COMPILE-FILE-PATHNAME*
*COMPILE-FILE-TRUENAME*
*COMPILE-PRINT*
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-VM:*STATIC-SPACE-FREE-POINTER*
SB-VM:*INITIAL-DYNAMIC-SPACE-FREE-POINTER*
-SB-VM:*CURRENT-CATCH-BLOCK*
+SB-VM:*CURRENT-CATCH-BLOCK* ; bound at thread entry (in C)
SB-VM:*STATIC-SYMBOLS*
SB-VM:*CONTROL-STACK-START* ; safe, bound at thread entry
SB-VM:*READ-ONLY-SPACE-FREE-POINTER*
SB-VM:*BINDING-STACK-START* ; safe, bound at thread entry
SB-VM:*CONTROL-STACK-END* ; safe, bound at thread entry
-SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK*
+SB-VM::*CURRENT-UNWIND-PROTECT-BLOCK* ; bound at thread entry (in C)
SB-VM::*FREE-TLS-INDEX*
SB-VM::*BINDING-STACK-POINTER*
SB-VM::*ALLOCATION-POINTER* ; may be mostly unused ?
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*
+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*
SB-KERNEL:*UNIVERSAL-FUN-TYPE*
SB-KERNEL:*COLD-INIT-COMPLETE-P*
SB-KERNEL:*UNIVERSAL-TYPE* ; readonly
-SB-KERNEL:*HANDLER-CLUSTERS*
+SB-KERNEL:*HANDLER-CLUSTERS* ; bound per-thread
SB-KERNEL:*EMPTY-TYPE* ; readonly
SB-KERNEL:*MAXIMUM-ERROR-DEPTH*
-SB-KERNEL:*CONDITION-RESTARTS*
+SB-KERNEL:*CONDITION-RESTARTS* ; bound per-thread
SB-KERNEL:*TYPE-SYSTEM-INITIALIZED*
-SB-KERNEL:*RESTART-CLUSTERS*
+SB-KERNEL:*RESTART-CLUSTERS* ; bound per-thread
SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR*
SB-KERNEL::*BUILT-IN-CLASS-CODES* ; readonly
SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN*
SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR*
SB-KERNEL::*CTYPE-OF-CACHE-VECTOR*
-SB-IMPL::*READ-BUFFER*
+SB-IMPL::*READ-BUFFER* ; FIXME: non-threadsafe
SB-IMPL::*SECONDARY-ATTRIBUTE-TABLE*
SB-IMPL::*STANDARD-READTABLE*
-SB-IMPL::*OUCH-PTR*
+SB-IMPL::*OUCH-PTR* ; FIXME: non-threadsafe
SB-IMPL::*ERROR-ERROR-DEPTH*
SB-IMPL::*CURRENT-ERROR-DEPTH*
SB-IMPL::*INTERNAL-REAL-TIME-BASE-SECONDS*
SB-IMPL::*TIMEZONE-TABLE*
SB-IMPL::*BQ-COMMA-FLAG* ; readonly
SB-IMPL::*PRINT-OBJECT-IS-DISABLED-P*
-SB-IMPL::*MERGE-SORT-TEMP-VECTOR*
+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* ; 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::*MAX-EVENT-TO-USEC*
SB-IMPL::*INPUT-ROUTINES*
SB-IMPL::*MAX-EVENT-TO-SEC*
-SB-IMPL::*READ-BUFFER-LENGTH*
+SB-IMPL::*READ-BUFFER-LENGTH* ; FIXME: not threadsafe
SB-IMPL::*LONG-MONTH-TABLE*
SB-IMPL::*OLD-PACKAGE*
SB-IMPL::*INTEGER-READER-BASE-POWER*
SB-IMPL::*BQ-AT-FLAG* ; readonly
SB-IMPL::*MACHINE-VERSION* ; unset/unbound ? are we using this?
SB-IMPL::*IGNORE-WILDCARDS*
-SB-IMPL::*INCH-PTR*
+SB-IMPL::*INCH-PTR* ; FIXME: non-threadsafe
SB-IMPL::*SHARP-EQUAL-ALIST*
SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe
*MACROEXPAND-HOOK*
*RANDOM-STATE*
-SB-BIGNUM::*TRUNCATE-Y*
-SB-BIGNUM::*TRUNCATE-X*
-
SB-INT:*CL-PACKAGE* ; readonly
SB-INT:*KEYWORD-PACKAGE* ; readonly
SB-INT:*SETF-FDEFINITION-HOOK*