0.9.13.47: Thread safety miscellania
authorNikodemus Siivola <nikodemus@random-state.net>
Sun, 18 Jun 2006 23:47:57 +0000 (23:47 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Sun, 18 Jun 2006 23:47:57 +0000 (23:47 +0000)
  * Use localtime_r and gmtime_r instead of thread-unsafe variants
    in time.c.
  * Note gethostby* reentrancy issue in sb-bsd-sockets in BUGS.
  * Trivial PCL cleanups:
    ** *ALL-PV-TABLE-LIST* was unused -- things only got pushed on it,
       but never read. Commented out with a comment, removed code that
       did the pushing.
    ** *INITIAL-PV-TABLE* was unused, deleted.
    ** *EMPTY-PV* was unused, deleted.
    ** *EMPTY-CACHE* was unused, deleted.
    ** *MFP1* & friends implemented a two-element cache outside
       a hash-table. Deleted and replaced with simple hash-table
       access. Boinkmarks will show the truth.
    ** Moved redundant toplevel SETQs to the original DEFPARAMTER
       of various *FOO-COST*s.
    How is this thread-safety related? It happened while flagging
    some PCL globals as safe and others as worthy of attention
    in doc/internals-notes/threading-specials. Also sorted the
    names, so *THE-FOO*s stand out in one place -- seeming to
    me as least-likely causes of trouble.
  * Whitespace.

BUGS
NEWS
doc/internals-notes/threading-specials
src/code/win32.lisp
src/pcl/boot.lisp
src/pcl/cache.lisp
src/pcl/dfun.lisp
src/pcl/vector.lisp
src/runtime/time.c
tools-for-build/grovel-headers.c
version.lisp-expr

diff --git a/BUGS b/BUGS
index f73845f..890f957 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -900,7 +900,7 @@ WORKAROUND:
   strongly suspected problems, as of 0.8.3.10: please update this
   bug instead of creating new ones
 
-    localtime() - called for timezone calculations in code/time.lisp
+    gethostbyname, gethostbyaddr in sb-bsd-sockets
 
 284: Thread safety: special variables
   There are lots of special variables in SBCL, and I feel sure that at
diff --git a/NEWS b/NEWS
index 926189a..8e8829f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,8 @@ changes in sbcl-0.9.14 relative to sbcl-0.9.13:
     down to an SB-SYS:FD-STREAM, allowing direct communication in
     more cases. Temporary files and pipes are still used as a fallback
     strategy.
+  * thread-safety: DECODE-UNIVERSAL-TIME & GET-DECODED-TIME depended
+    on the non-reentrant C functions localtime(3) and gmtime(3).
   * bug fix: global optimization policy was not visible in LOCALLY and 
     MACROLET forms.
   * bug fix: class objects can be used as specializers in methods.
index b76218d..d27b248 100644 (file)
@@ -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
index c4b7589..65e3d6a 100644 (file)
     (unless (zerop (peek-named-pipe handle nil 0 nil (addr avail) nil))
       (return-from handle-listen (plusp avail)))
 
-    (unless (zerop (peek-console-input handle 
+    (unless (zerop (peek-console-input handle
                                        (cast buf (* t))
                                        input-record-size (addr avail)))
       (return-from handle-listen (plusp avail)))
   (defvar *codepage-to-external-format* (make-hash-table)))
 
 #+sb-unicode
-(dolist 
+(dolist
     (cp '(;;037       IBM EBCDIC - U.S./Canada
           (437 :CP437) ;; OEM - United States
           ;;500       IBM EBCDIC - International
               (gethash (alien-funcall (extern-alien "GetACP@0" (function UINT)))
                        *codepage-to-external-format*
                        :latin-1))))
-  
+
   (declaim (ftype (function () keyword) oem-codepage))
   (defun oem-codepage ()
     (or *oem-codepage*
 
 ;; http://msdn.microsoft.com/library/en-us/dllproc/base/getconsolecp.asp
 (declaim (ftype (function () keyword) console-input-codepage))
-(defun console-input-codepage ()  
+(defun console-input-codepage ()
   (or #!+sb-unicode
       (gethash (alien-funcall (extern-alien "GetConsoleCP@0" (function UINT)))
                *codepage-to-external-format*)
 (declaim (ftype (function () keyword) console-output-codepage))
 (defun console-output-codepage ()
   (or #!+sb-unicode
-      (gethash (alien-funcall 
+      (gethash (alien-funcall
                 (extern-alien "GetConsoleOutputCP@0" (function UINT)))
                *codepage-to-external-format*)
       :latin-1))
 (defun sb!unix:posix-getcwd ()
   (with-alien ((apath (* tchar) (make-alien tchar (1+ MAX_PATH)))
                (afunc (function dword dword (* tchar))
-                      :extern 
+                      :extern
                       #!-sb-unicode "GetCurrentDirectoryA@8"
                       #!+sb-unicode "GetCurrentDirectoryW@8"))
     (let ((ret (alien-funcall afunc (1+ MAX_PATH) apath)))
     (with-alien ((aname (* tchar) (make-alien tchar (1+ name-length)))
                  (aenv (* tchar) (make-alien tchar default-environment-length))
                  (afunc (function dword (* tchar) (* tchar) dword)
-                        :extern 
+                        :extern
                         #!-sb-unicode "GetEnvironmentVariableA@12"
                         #!+sb-unicode "GetEnvironmentVariableW@12"))
       (dotimes (i name-length)
index 4cbefe1..8ffba53 100644 (file)
@@ -1363,37 +1363,12 @@ bootstrapping.
            (funcallable-instance-p (gdefinition name)))))
 \f
 (defvar *method-function-plist* (make-hash-table :test 'eq))
-(defvar *mf1* nil)
-(defvar *mf1p* nil)
-(defvar *mf1cp* nil)
-(defvar *mf2* nil)
-(defvar *mf2p* nil)
-(defvar *mf2cp* nil)
 
 (defun method-function-plist (method-function)
-  (unless (eq method-function *mf1*)
-    (rotatef *mf1* *mf2*)
-    (rotatef *mf1p* *mf2p*)
-    (rotatef *mf1cp* *mf2cp*))
-  (unless (or (eq method-function *mf1*) (null *mf1cp*))
-    (setf (gethash *mf1* *method-function-plist*) *mf1p*))
-  (unless (eq method-function *mf1*)
-    (setf *mf1* method-function
-          *mf1cp* nil
-          *mf1p* (gethash method-function *method-function-plist*)))
-  *mf1p*)
-
-(defun (setf method-function-plist)
-    (val method-function)
-  (unless (eq method-function *mf1*)
-    (rotatef *mf1* *mf2*)
-    (rotatef *mf1cp* *mf2cp*)
-    (rotatef *mf1p* *mf2p*))
-  (unless (or (eq method-function *mf1*) (null *mf1cp*))
-    (setf (gethash *mf1* *method-function-plist*) *mf1p*))
-  (setf *mf1* method-function
-        *mf1cp* t
-        *mf1p* val))
+  (gethash method-function *method-function-plist*))
+
+(defun (setf method-function-plist) (val method-function)
+  (setf (gethash method-function *method-function-plist*) val))
 
 (defun method-function-get (method-function key &optional default)
   (getf (method-function-plist method-function) key default))
index 313d96d..5eb5930 100644 (file)
     ((8 16)  4)
     (otherwise 6)))
 
-(defvar *empty-cache* (make-cache)) ; for defstruct slot initial value forms
index 1db2f02..3983779 100644 (file)
@@ -633,9 +633,9 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
       (let ((cdc  (caching-dfun-cost gf))) ; fast
         (> cdc (dispatch-dfun-cost gf cdc))))))
 
-(defparameter *non-built-in-typep-cost* 1)
-(defparameter *structure-typep-cost* 1)
-(defparameter *built-in-typep-cost* 0)
+(defparameter *non-built-in-typep-cost* 100)
+(defparameter *structure-typep-cost*  15)
+(defparameter *built-in-typep-cost* 5)
 
 ;;; According to comments in the original CMU CL version of PCL,
 ;;; the cost LIMIT is important to cut off exponential growth for
@@ -666,9 +666,9 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
        max-cost-so-far))
    #'identity))
 
-(defparameter *cache-lookup-cost* 1)
-(defparameter *wrapper-of-cost* 0)
-(defparameter *secondary-dfun-call-cost* 1)
+(defparameter *cache-lookup-cost*  30)
+(defparameter *wrapper-of-cost* 15)
+(defparameter *secondary-dfun-call-cost* 30)
 
 (defun caching-dfun-cost (gf)
   (let ((nreq (get-generic-fun-info gf)))
@@ -679,13 +679,6 @@ Except see also BREAK-VICIOUS-METACIRCLE.  -- CSR, 2003-05-28
            *secondary-dfun-call-cost*
            0))))
 
-(setq *non-built-in-typep-cost* 100)
-(setq *structure-typep-cost* 15)
-(setq *built-in-typep-cost* 5)
-(setq *cache-lookup-cost* 30)
-(setq *wrapper-of-cost* 15)
-(setq *secondary-dfun-call-cost* 30)
-
 (declaim (inline make-callable))
 (defun make-callable (gf methods generator method-alist wrappers)
   (let* ((*applicable-methods* methods)
index 3787318..c2103e9 100644 (file)
 
 #-sb-fluid (declaim (sb-ext:freeze-type pv-table))
 
-(defvar *initial-pv-table* (make-pv-table-internal nil nil))
-
-; help new slot-value-using-class methods affect fast iv access
-(defvar *all-pv-table-list* nil)
+;;; FIXME: The comment below seem to indicate that this was intended
+;;; to be actually used, however, it isn't anymore, and was commented
+;;; out at 0.9.13.47. Also removed was code in MAKE-PV-TABLE that
+;;; pushed each new PV-TABLE onto this list. --NS 2006-06-18
+;;;
+;;;   help new slot-value-using-class methods affect fast iv access
+;;;
+;;;  (defvar *all-pv-table-list* nil)
 
+(declaim (inline make-pv-table))
 (defun make-pv-table (&key slot-name-lists call-list)
-  (let ((pv-table (make-pv-table-internal slot-name-lists call-list)))
-    (push pv-table *all-pv-table-list*)
-    pv-table))
+  (make-pv-table-internal slot-name-lists call-list))
 
 (defun make-pv-table-type-declaration (var)
   `(type pv-table ,var))
                          (setq new-p t)
                          (make-pv-table :slot-name-lists snl
                                         :call-list cl))))))
-    (let ((pv-table (outer (mapcar #'inner (cons call-list slot-name-lists)))))
-      (when new-p
-        (let ((pv-index 1))
-          (dolist (slot-name-list slot-name-lists)
-            (dolist (slot-name (cdr slot-name-list))
-              (note-pv-table-reference slot-name pv-index pv-table)
-              (incf pv-index)))
-          (dolist (gf-call call-list)
-            (note-pv-table-reference gf-call pv-index pv-table)
-            (incf pv-index))
-          (setf (pv-table-pv-size pv-table) pv-index)))
-      pv-table))))
+      (let ((pv-table
+             (outer (mapcar #'inner (cons call-list slot-name-lists)))))
+        (when new-p
+          (let ((pv-index 1))
+            (dolist (slot-name-list slot-name-lists)
+              (dolist (slot-name (cdr slot-name-list))
+                (note-pv-table-reference slot-name pv-index pv-table)
+                (incf pv-index)))
+            (dolist (gf-call call-list)
+              (note-pv-table-reference gf-call pv-index pv-table)
+              (incf pv-index))
+            (setf (pv-table-pv-size pv-table) pv-index)))
+        pv-table))))
 
 (defun note-pv-table-reference (ref pv-offset pv-table)
   (let ((entry (gethash ref *pv-key-to-pv-table-table*)))
 (defun make-pv-type-declaration (var)
   `(type simple-vector ,var))
 
-(defvar *empty-pv* #())
-
 (defmacro pvref (pv index)
   `(svref ,pv ,index))
 
index b980ba1..402a19f 100644 (file)
@@ -23,8 +23,8 @@ void get_timezone(time_t when, int *secwest, boolean *dst)
     struct tm ltm, gtm;
     int sw;
 
-    ltm = *localtime(&when);
-    gtm = *gmtime(&when);
+    ltm = *localtime_r(&when, &ltm);
+    gtm = *gmtime_r(&when, &gtm);
 
     sw = (((gtm.tm_hour*60)+gtm.tm_min)*60+gtm.tm_sec) - (((ltm.tm_hour*60)+ltm.tm_min)*60+ltm.tm_sec);
     if ((gtm.tm_wday + 1) % 7 == ltm.tm_wday)
index 169a719..3503f5c 100644 (file)
@@ -178,7 +178,7 @@ main(int argc, char *argv[])
 
     defconstant("enoent", ENOENT);
     defconstant("eexist", EEXIST);
-    
+
     defconstant("s-ifmt",  S_IFMT);
     defconstant("s-ifdir", S_IFDIR);
     defconstant("s-ifreg", S_IFREG);
index ea15df7..94b9e21 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.13.46"
+"0.9.13.47"