Update some internal notes

This commit is contained in:
Douglas Katzman 2014-07-10 23:23:13 -04:00
parent 096e02568e
commit fe1e6380be
2 changed files with 35 additions and 50 deletions

View file

@ -597,9 +597,14 @@ 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.
INFO functions are currently believed to be multi-writer/reader threadsafe,
though it's hard to know for sure since they were definitely read-safe,
and writes are done only while holding **WORLD-LOCK** as things stand.
The algorithms employed are used in at least one industrial-strength Lisp
application, though a bug has been reported (to me, dougk) regarding
the fasloader that might be related to INFO, or to the fasloader.
Catch 22: can't expose threading bugs until lock is removed
can't remove the lock until INFO is proven to be threadsafe.
*COMPILE-FILE-PATHNAME*
*COMPILE-FILE-TRUENAME*
@ -618,9 +623,7 @@ SB-C:*BACKEND-SC-NUMBERS*
SB-C:*ELSEWHERE*
SB-C:*BACKEND-T-PRIMITIVE-TYPE*
SB-C:*BACKEND-SB-LIST*
SB-C:*SETF-ASSUMED-FBOUNDP*
SB-C:*FREE-FUNS*
SB-C:*BACKEND-DISASSEM-PARAMS*
SB-C:*BACKEND-SUBFEATURES*
SB-C:*COUNT-VOP-USAGES*
SB-C:*SUPPRESS-VALUES-DECLARATION*
@ -657,18 +660,15 @@ SB-C::*QUEUED-PROCLAIMS*
SB-C::*COMPILER-STYLE-WARNING-COUNT*
SB-C::*LABEL-IDS*
SB-C::TN-NEXT*
SB-C::*BACKEND-SUPPORT-ROUTINES*
SB-C::*COMPILED-CODE-LOCATION-KINDS*
SB-C::*VOP-TN-REFS*
SB-C::*INFO-CACHE-VECTOR*
SB-C::*FAILURE-P*
SB-C::*LAST-ORIGINAL-SOURCE*
SB-C::NEXT*
SB-C::LIST*-IR2-CONVERT-OPTIMIZER
SB-C::*COMPILER-ERROR-BAILOUT*
SB-C::*DELAYED-IR1-TRANSFORMS*
SB-C::*INFO-TYPES*
SB-C::*CACHED-INFO-ENVIRONMENT*
SB-C::*INFO-TYPES* ; readonly
SB-C::*CHECK-CONSISTENCY*
SB-C::*SEEN-FUNS*
SB-C::*USING-VOP-TN-REFS*
@ -685,7 +685,6 @@ SB-C::*BACKEND-PRIMITIVE-TYPE-ALIASES*
SB-C::*NO-COSTS*
SB-C::*PACK-ASSIGN-COSTS*
SB-C::*CURRENT-FORM-NUMBER*
SB-C::*BACKEND-META-SC-NAMES*
SB-C::*BLOCK-COMPILE-ARG*
SB-C::*COMPILER-ERROR-PRINT-LENGTH*
SB-C::*CONTINUATION-NUMBER*
@ -698,16 +697,14 @@ SB-C::*COMPILER-WARNING-COUNT*
SB-C::*SUPPRESS-NOTE-VOPS*
SB-C::*COMPILER-ERROR-PRINT-LEVEL*
SB-C::*COMPLEMENT-TYPE-CHECKS*
SB-C::*META-PRIMITIVE-TYPE-NAMES*
SB-C::*FUN-NAMES-IN-THIS-FILE*
SB-C::*SPLIT-IR2-BLOCK-EVENT-INFO*
SB-C::*TRACE-TABLE*
SB-C::*LAST-SOURCE-FORM*
SB-C::*WEAKEN-TYPE-CACHE-VECTOR*
SB-C::*WEAKEN-TYPE-CACHE-VECTOR* ; threadsafe
SB-C::*-DERIVE-TYPE-AUX
SB-C::*BLOCK-COMPILE*
SB-C::*BIG-COMPILER-LOCK* ; protecting the rest
SB-C::*VM-SUPPORT-ROUTINES*
SB-C::*PRIMITIVE-TYPE-SLOT-ALIST*
SB-C::*PREVIOUS-LOCATION*
SB-C::*BYTE-BUFFER*
@ -736,17 +733,14 @@ SB-C::*SC-VOP-SLOTS*
SB-C::*IR1-OPTIMIZE-MAXED-OUT-EVENT-INFO*
SB-C::*CONTINUATION-NUMBERS*
SB-C::*WARNINGS-P*
SB-C::*BACKEND-META-SC-NUMBERS*
SB-C::*FLAME-ON-NECESSARILY-UNDEFINED-FUNCTION*
SB-C::*UNPACK-FALLBACK-EVENT-INFO*
SB-C::*SOURCE-INFO*
SB-C::*LIVE-BLOCK*
SB-C::*BACKEND-META-PRIMITIVE-TYPE-NAMES*
SB-C::*NEXT-LOCATION*
SB-C::*ELSEWHERE-LABEL*
SB-C::*SOURCE-PATHS*
SB-C::*CONSTANTS*
SB-C::*BACKEND-META-SB-NAMES*
SB-C::*DEFAULT-NTHCDR-OPEN-CODE-LIMIT*
SB-C::*ALWAYS-OPTIMIZED-AWAY*
SB-C::*CURRENT-PATH*
@ -754,7 +748,6 @@ SB-C::*LABEL-ID*
SB-C::*ENTRY-POINTS*
SB-C::*COMPILER-TRACE-OUTPUT*
SB-C::*CONSTRAINT-NUMBER*
SB-C::*INFO-CLASSES*
SB-C::*RESULT-FIXUPS*
SB-C::*REPACK-BLOCKS*
SB-C::IR1-CONVERT-LET*
@ -859,8 +852,6 @@ eligible for defconstant). Mostly they're attributes of the backend machine
SB-C:*BACKEND-REGISTER-SAVE-PENALTY*
SB-C:*BACKEND-BYTE-ORDER*
SB-C:*BACKEND-INSTRUCTION-FORMATS*
SB-C:*BACKEND-INSTRUCTION-FLAVORS*
SB-VM:*PRIMITIVE-OBJECTS*
SB-VM:*ASSEMBLY-UNIT-LENGTH*
SB-VM::*FP-CONSTANT-L2E*
@ -930,10 +921,10 @@ SB-VM::*IGNORE-AFTER*
SB-VM::*IMM-WORD-PREFILTER-WRAPPER*
SB-VM::*REGISTER-ARG-TNS*
SB-VM::*IMM-DATA-PREFILTER-WRAPPER*
SB-VM::*PRIMITIVE-TYPE-AUX-CACHE-VECTOR*
SB-VM::*PRIMITIVE-TYPE-AUX-CACHE-VECTOR* ; threadsafe
SB-VM::*LABEL-2-PREFILTER-WRAPPER*
SB-VM::*ROOM-INFO*
SB-VM::*ADJUSTABLE-VECTORS*
SB-VM::*ADJUSTABLE-VECTORS* ; under **WORLD-LOCK** - should be done better
SB-VM::*CONDITION-NAME-VEC*
SB-VM::*IMM-WORD-16-PREFILTER-WRAPPER*
SB-VM::*SIMPLE-ARRAY-PRIMITIVE-TYPES*
@ -953,58 +944,56 @@ SB-KERNEL:*MAXIMUM-ERROR-DEPTH*
SB-KERNEL:*CONDITION-RESTARTS* ; bound per-thread
SB-KERNEL:*TYPE-SYSTEM-INITIALIZED*
SB-KERNEL:*RESTART-CLUSTERS* ; bound per-thread
SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR*
SB-KERNEL::*MAKE-VALUES-TYPE-CACHED-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*BUILT-IN-CLASS-CODES* ; readonly
SB-KERNEL::*DEF!STRUCT-TYPE-MAKE-LOAD-FORM-FUN*
SB-KERNEL::*LAYOUT-CLOS-HASH-RANDOM-STATE*
SB-KERNEL::*TYPE-TEST-ORDERING*
SB-KERNEL::*COMMON-TYPESPECS*
SB-KERNEL::*TYPE=-CACHE-VECTOR*
SB-KERNEL::*VALUES-SUBTYPEP-CACHE-VECTOR*
SB-KERNEL::*TYPE=-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*VALUES-SUBTYPEP-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*TYPECHECKFUNS*
SB-KERNEL::*%TYPE-INTERSECTION-CACHE-VECTOR*
SB-KERNEL::*TYPE-INTERSECTION2-CACHE-VECTOR*
SB-KERNEL::*%TYPE-INTERSECTION-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*TYPE-INTERSECTION2-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*COLD-INIT-FORMS*
SB-KERNEL::*DEFAULT-DEFAULT*
SB-KERNEL::*RAW-SLOT-DATA-LIST*
SB-KERNEL::*SPECIALIZED-ARRAY-ELEMENT-TYPES* ; readonly
SB-KERNEL::*DEFSTRUCT-HOOKS*
SB-KERNEL::*VALUES-TYPE-UNION-CACHE-VECTOR*
SB-KERNEL::*VALUES-TYPE-UNION-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*INTERNAL-ERRORS*
SB-KERNEL::*VALUES-TYPE-INTERSECTION-CACHE-VECTOR*
SB-KERNEL::*VALUES-TYPE-INTERSECTION-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*FORWARD-REFERENCED-LAYOUTS*
SB-KERNEL::*SYSTEM-LETS* ; bound
SB-KERNEL::*%COERCE-TO-VALUES-CACHE-VECTOR*
SB-KERNEL::*%COERCE-TO-VALUES-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*IGNORABLE-VARS*
SB-KERNEL::*ENV-VAR* ; bound
SB-KERNEL::|*%%MAKE-UNION-TYPE-cached-CACHE-VECTOR*|
SB-KERNEL::*CSUBTYPEP-CACHE-VECTOR*
SB-KERNEL::|*%%MAKE-UNION-TYPE-cached-CACHE-VECTOR*| ; threadsafe
SB-KERNEL::*CSUBTYPEP-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*EMPTY-CONDITION-SLOT*
SB-KERNEL::*TYPE-UNION2-CACHE-VECTOR*
SB-KERNEL::*TYPE-UNION2-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*TYPE-CLASS-FUN-SLOTS*
SB-KERNEL::*ARG-TESTS* ; bound
SB-KERNEL::*USER-LETS* ; bound
SB-KERNEL::|*%%MAKE-ARRAY-TYPE-cached-CACHE-VECTOR*|
SB-KERNEL::|*%%MAKE-ARRAY-TYPE-cached-CACHE-VECTOR*| ; threadsafe
SB-KERNEL::*FINDING-NAME*
SB-KERNEL::*TYPE-CLASSES*
SB-KERNEL::*VALUES-SPECIFIER-TYPE-CACHE-VECTOR*
SB-KERNEL::*VALUES-SPECIFIER-TYPE-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*FLOAT-FORMATS* ; readonly
SB-KERNEL::*INTERNAL-ERROR-ARGS*
SB-KERNEL::*DEF!STRUCT-SUPERTYPE*
SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR*
SB-KERNEL::*CTYPE-OF-CACHE-VECTOR*
SB-KERNEL::*%TYPE-UNION-CACHE-VECTOR* ; threadsafe
SB-KERNEL::*CTYPE-OF-CACHE-VECTOR* ; threadsafe
SB-IMPL::*READ-BUFFER* ; FIXME: non-threadsafe
SB-IMPL::*SECONDARY-ATTRIBUTE-TABLE*
SB-IMPL::*READ-BUFFER* ; safe when used via WITH-READ-BUFFER
SB-IMPL::*SECONDARY-ATTRIBUTE-TABLE* ; now *CONSTITUENT-TRAIT-TABLE*, constant
SB-IMPL::*STANDARD-READTABLE*
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::*DAYLIGHT-TABLE*
SB-IMPL::*OFFENDING-DATUM*
SB-IMPL::*HANDLERS-INSTALLED*
SB-IMPL::*READ-FROM-STRING-SPARES*
SB-IMPL::*HASH-TABLE-TESTS*
SB-IMPL::*ATTRIBUTE-NAMES*
SB-IMPL::*DAYS-BEFORE-MONTH* ; readonly
@ -1013,11 +1002,10 @@ SB-IMPL::*UNIX-HOST*
SB-IMPL::*DESCRIPTOR-HANDLERS*
SB-IMPL::*STRING-OUTPUT-STREAMS*
SB-IMPL::*CLOSE-ON-ERROR*
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::*PROFILE-HASH-CACHE*
SB-IMPL::*PROFILE-HASH-CACHE* ; not threadsafe, but don't care- debug only
SB-IMPL::*FIXNUM-POWER--1*
SB-IMPL::*SHARP-EQUAL-CIRCLE-TABLE*
SB-IMPL::*SOFTWARE-INTERRUPT-VECTOR* ; suspect unused
@ -1031,13 +1019,12 @@ SB-IMPL::*CIRCULARITY-HASH-TABLE*
SB-IMPL::*LOAD-PRINT-STUFF*
SB-IMPL::*ACTIVE-PROCESSES*
SB-IMPL::*SHARP-SHARP-ALIST*
SB-IMPL::*BASE-POWER*
SB-IMPL::*LOGICAL-PATHNAME-DEFAULTS*
SB-IMPL::*AVAILABLE-BUFFERS*
SB-IMPL::*BQ-DOT-FLAG* ; readonly
SB-IMPL::*CIRCULARITY-COUNTER*
SB-IMPL::*DIGITS*
SB-IMPL::*PREVIOUS-READTABLE-CASE* ; FIXME: printer not threadsafe
SB-IMPL::*PREVIOUS-READTABLE-CASE* ; bound per-thread
SB-IMPL::*BQ-VECTOR-FLAG* ; readonly
SB-IMPL::*ABBREV-WEEKDAY-TABLE*
SB-IMPL::*LOGICAL-HOSTS*
@ -1057,17 +1044,14 @@ 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* ; FIXME: not threadsafe
SB-IMPL::*LONG-MONTH-TABLE*
SB-IMPL::*OLD-PACKAGE*
SB-IMPL::*INTEGER-READER-BASE-POWER*
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* ; FIXME: non-threadsafe
SB-IMPL::*SHARP-EQUAL-ALIST*
SB-IMPL::*PREVIOUS-CASE* ; FIXME: printer not threadsafe
SB-IMPL::*PREVIOUS-CASE* ; bound per-thread
*INLINE-EXPANSION-LIMIT*
*DERIVE-FUNCTION-TYPES*
@ -1086,8 +1070,8 @@ SB-INT:*CL-PACKAGE* ; readonly
SB-INT:*KEYWORD-PACKAGE* ; readonly
SB-INT:*SETF-FDEFINITION-HOOK*
SB-INT:*DEFAULT-INIT-CHAR-FORM*
SB-INT:*EOF-OBJECT*
SB-INT:*EOF-OBJECT* ; readonly
SB-INT:*AFTER-SAVE-INITIALIZATIONS*
SB-INT:*LOAD-SOURCE-DEFAULT-TYPE*
SB-INT:*BEFORE-SAVE-INITIALIZATIONS*
SB-INT:*INFO-ENVIRONMENT*
SB-INT:*INFO-ENVIRONMENT* ; threadsafe

View file

@ -146,6 +146,7 @@
;;; In a bootstrapping situation, we should be careful to use the
;;; correct values for the system parameters.
;;;
;;; Meta: the following comment is not true. Should remove the AUX fn.
;;; We need an aux function because we need to use both
;;; !DEF-VM-SUPPORT-ROUTINE and DEFUN-CACHED.
(/show0 "primtype.lisp 188")