X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Finternals-notes%2Fthreading-specials;h=d27b2486fb4dbffaf453e88e037b0cf8e8bfdde1;hb=ebc0f0ebf9efd39519ab86ba28c33abdb25443e0;hp=aad791548198dccadd3b0f23fa592dc7679591d9;hpb=a208de2a9ab6a63c27f3e6c291fea9f7c4d774a1;p=sbcl.git diff --git a/doc/internals-notes/threading-specials b/doc/internals-notes/threading-specials index aad7915..d27b248 100644 --- a/doc/internals-notes/threading-specials +++ b/doc/internals-notes/threading-specials @@ -27,7 +27,7 @@ The goals are 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 @@ -103,278 +103,287 @@ The PCL authors thought a bit about thread safety, adding 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* + +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::*CACHE-MISS-VALUES-STACK* + 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::*PVS* + SB-PCL::*SLOT-NAME-LISTS-INNER* + SB-PCL::*SLOT-NAME-LISTS-OUTER* + +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::*PREVIOUS-NWRAPPERS* +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 @@ -599,6 +608,10 @@ Note that the compiler and fasloader are strongly believed not to be 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* @@ -817,13 +830,13 @@ SB-FASL::FOP-LIST*-3 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 ? @@ -838,7 +851,7 @@ SB-KERNEL::*GC-TRIGGER* ; I think this is dead, check SB-IMPL::*CURRENT-UNWIND-PROTECT-BLOCK* SB-IMPL::*CURRENT-CATCH-BLOCK* 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 @@ -961,12 +974,12 @@ SB-KERNEL:*CURRENT-LEVEL-IN-PRINT* 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* @@ -1008,10 +1021,10 @@ SB-KERNEL::*DEF!STRUCT-SUPERTYPE* 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* @@ -1031,7 +1044,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::*MERGE-SORT-TEMP-VECTOR* +SB-IMPL::*MERGE-SORT-TEMP-VECTOR* ; FIXME: SORT non-threadsafe, non-reentrant SB-IMPL::*PROFILE-HASH-CACHE* SB-IMPL::*FIXNUM-POWER--1* SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE* @@ -1044,7 +1057,7 @@ 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* +SB-IMPL::*ZAP-ARRAY-DATA-TEMP* ; FIXME: ADJUST-ARRAY non-threadsafe SB-IMPL::*ACTIVE-PROCESSES* SB-IMPL::*SHARP-SHARP-ALIST* SB-IMPL::*BASE-POWER* @@ -1053,7 +1066,7 @@ SB-IMPL::*AVAILABLE-BUFFERS* SB-IMPL::*BQ-DOT-FLAG* ; readonly SB-IMPL::*CIRCULARITY-COUNTER* SB-IMPL::*DIGITS* -SB-IMPL::*PREVIOUS-READTABLE-CASE* +SB-IMPL::*PREVIOUS-READTABLE-CASE* ; FIXME: printer not threadsafe SB-IMPL::*BQ-VECTOR-FLAG* ; readonly SB-IMPL::*ABBREV-WEEKDAY-TABLE* SB-IMPL::*LOGICAL-HOSTS* @@ -1066,14 +1079,14 @@ SB-IMPL::*VALID-FUN-NAMES-ALIST* SB-IMPL::*PERIODIC-POLLING-FUNCTION* SB-IMPL::*ABORTED-COMPILATION-UNIT-COUNT* SB-IMPL::*LONG-WEEKDAY-TABLE* -SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* +SB-IMPL::*INTERNAL-SYMBOL-OUTPUT-FUN* ; FIXME: printer not threadsafe SB-IMPL::*BACKQUOTE-COUNT* ; bound SB-IMPL::*DIGIT-BASES* SB-IMPL::*PREVIOUS-DRIBBLE-STREAMS* 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* @@ -1081,9 +1094,9 @@ SB-IMPL::*ERROR-THROW-UP-COUNT* 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* +SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe *INLINE-EXPANSION-LIMIT* *DERIVE-FUNCTION-TYPES* @@ -1098,9 +1111,6 @@ SB-IMPL::*PREVIOUS-CASE* *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*