;;; -*- Mode:LISP; Package:K-KBUG; Base:10; Readtable:CL -*-


;;; *COLD-LOADED-FUNCTIONS*
;;; Contains NCOMPILED-FUNCTION structures for each function in the cold load.
;;; MEGA-BOOT -> K-BOOT -> MAKE-COLD-LOAD ->
;;; COLD-LOAD-FILE -> COLD-FASLOAD -> COLD-READ-OBJECT -> COLD-READ-COMPILED-FUNCTION -> CREATE-COLD-COMPILED-FUNCTION


;;; This is more complicated than I first thought.
;;;
;;; At cold-fasl time:
;;; 
;;; DEFAFUNs or DEFUNs or DEFSUBSTs encountered in KFASL files 
;;; ENTER-COMPILED-FUNCTION pushes ncompiled-function structure, source file and assembled code on *COLD-FUNCTIONS-LOADED*
;;;
;;; When an ncompiled-function structure is encountered in the KFASL file
;;; CREATE-COLD-COMPILED-FUNCTION will push an NCOMPILED-FUNCTION structure on the *COLD-LOADED-FUNCTIONS* list
;;;


;;; To simulate downloading to the K but to instead grab the ncompiled-function structures into these lists
;;;
;;; Use K-UNFASL with some hacking to build ncompiled-function structures.
;;;
;;; Or use the COLD-FASLOADer:
;;; Then we must deal with EVAL, COMPILED-FUNCTION, DEFUN, DEFCONSTANT, DEFSUBST.

;;; *WARM-LOADED-FUNCTIONS*

;;; *HOT-LOADED-FUNCTIONS*



;(defun internal-cold-load-files (files compile-type load-type)
;  (dolist (file files)
;    (cold-load-file file compile-type load-type)))



(defvar *k-defined-functions* (make-hash-table :size 5096))

(defun find-k-defined-functions (&key (cold-load-built nil))
  (let ((k-cold:*cold-eval-list* '())
	(k-cold:*cold-loaded-functions* (if cold-load-built
					    k-cold:*cold-loaded-functions*
					  '()))
	(k-cold:*cold-functions-loaded* (if cold-load-built
					    k-cold:*cold-functions-loaded*
					  '()))
	(k-cold:*cold-load-warning-stream* nil))
    k-cold:*cold-load-warning-stream*
    (clrhash *k-defined-functions*)
    (unless cold-load-built
      (dolist (file user#:*cold-files*)
	(when (listp file)(setq file (car file)))
	(k-cold:cold-fasload file)))
    (dolist (file user#:*warm-loaded-files*)
      (when (listp file)(setq file (car file)))
      (k-cold:cold-fasload file))
    (dolist (file user#:*hot-loaded-files*)
      (when (listp file)(setq file (car file)))
      (k-cold:cold-fasload file))
    (dolist (f k-cold:*cold-functions-loaded*)
      (let ((structure  (k-cold:cold-function-entry-structure f)))
	(setf (gethash (nc:ncompiled-function-name structure) *k-defined-functions*)
	      (nc:ncompiled-function-refs structure)
	      )))))



;;; why are we getting all these small integers in the REFs field of ncompiled-functions?
;;; and also things like other ncompiled-functions structures ???

;;; we don't handle (:internal foo bar) or ncompiled-function structures as refs

(defvar *k-undefined-refs* '())

(defun find-undefined-refs (&key (functions *k-defined-functions* functions-providedp))
  (setq *k-undefined-refs* '())
  (maphash #'(lambda (function refs)
	       function
	       (map nil #'(lambda (ref)
			    (when (symbolp ref)
			      (unless (or (gethash ref *k-defined-functions*)
					  (and functions-providedp
					       (gethash ref functions)))
				(push (list function ref) *k-undefined-refs*))))
		    refs))
	   functions)
  (setq *k-undefined-refs* (remove-duplicates *k-undefined-refs*)))


(defvar *functions-in-kfasl* (make-hash-table))
(defvar *undefined-refs-in-kfasl* '())

(defun find-undefined-refs-in-kfasl (file)
  (let ((k-cold:*cold-eval-list* '())
	(k-cold:*cold-loaded-functions* '())
	(k-cold:*cold-functions-loaded* '())
	(k-cold:*cold-load-warning-stream* nil))
    k-cold:*cold-load-warning-stream*
    (k-cold:cold-fasload file)
    (clrhash *functions-in-kfasl*)
    (dolist (f k-cold:*cold-functions-loaded*)
      (let ((structure  (k-cold:cold-function-entry-structure f)))
	(setf (gethash (nc:ncompiled-function-name structure) *functions-in-kfasl*)
	      (nc:ncompiled-function-refs structure)
	      )))
    (let ((*k-undefined-refs* '()))
      (find-undefined-refs :functions *functions-in-kfasl*)
      (setq *undefined-refs-in-kfasl* *k-undefined-refs*))))

(defvar *undefined-refs* nil)

;(pprint *undefined-refs* nc:*debug-stream*)

(defun order-refs ()
  (setq *undefined-refs* nil)
  (dolist (pair *undefined-refs-in-kfasl*)
    (let ((caller (first  pair))
	  (undef  (second pair)))
      (let ((list (top-member undef *undefined-refs*)))
	(if list
	    (setf (cdr list) (pushnew caller (cdr list)))
	  (push (list undef caller) *undefined-refs*))))))

(defun top-member (item lists)
  (dolist (list lists nil)
    (when (eq item (car list))
      (return-from top-member list))))


;;; is having things like (single-float 56 56 56 56) in the immediates going to break somewhere?
;;; currently no one in the cold-load uses floats 
;;; we know this because COLD-FASLOAD did not handle them


;;; This little piece of code causes macros not to be sent down to the K if they are in the cold-load.
;;; From K;KOLD-LOADED.LISP

;(define-cold-fasl-op-handler cold-read-defmacro
;			     k2:$$fasl-op-defmacro
;			     (stream)
;  (let ((name (cold-read-object stream))
;	(function (cold-read-object stream)))
;    name
;    function
;    (format t "~%Ignoring macro ~s" name)))


;;; Remember: immediates that would be pointers in cold loaded code are not available until after
;;;   (KBUG-LOAD-COLD-INFO)  has been run and the cold load has been linked down on the K.


;;; perhaps use DTP-UNBOUND as default value for immediates that must be consed at link time ...


;Compiling JB: JIM; K-QFASL.LISP#>
;>>WARNING: The variable STREAM is used free; assumed special
;>>WARNING: The variable FASL-OP-VERSION-INFO is used free; assumed special
;>>WARNING: The variable OLD-DEF is used free; assumed special
;>>WARNING: (* 60 60) is not a valid function
;>>WARNING: The variable MACRO is used free; assumed special
;>>WARNING: ((AREF FASL-TABLE FASL-LIST-AREA) MACRO-COMPILED-PROGRAM) is not a valid function
;>>WARNING: ((AREF FASL-TABLE FASL-LIST-AREA) DEBUG-INFO-AREA) is not a valid function
;>>WARNING: 1 is not a valid function
;>>WARNING: 2 is not a valid function
;>>WARNING: 3 is not a valid function
;>>WARNING: The variable ISTREAM is used free; assumed special
;>>WARNING: The variable OSTREAM is used free; assumed special

#|
("SYSTEM:FASL-OP-LIST calls IF"
 "SYSTEM:FASL-OP-LIST calls IF"
 "SI::FASL-OP-FLOAT-SMALL-FLOAT calls K-GLOBAL::%LOGDPB"
 "SI::FASL-OP-FLOAT-SMALL-FLOAT calls K-GLOBAL::%POINTER-PLUS"
 "SI::FASL-OP-FLOAT-SMALL-FLOAT calls IF"
 "SI::FASL-OP-FLOAT-SMALL-FLOAT calls K-GLOBAL::%MAKE-POINTER"
 "SYSTEM:FASL-OP-EVAL calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-SET-PARAMETER calls SYSTEM:SET-AREF"
 "SYSTEM:FASL-OP-STOREIN-SYMBOL-CELL calls K-LISP-INTERNALS::ECASE"
 "SYSTEM:FASL-OP-FETCH-PROPERTY-CELL calls ZETALISP:PROPERTY-CELL-LOCATION"
 "SYSTEM:FASL-OP-FETCH-PROPERTY-CELL calls ZETALISP:CONTENTS"
 "SI::READFILE-INTERNAL calls ZETALISP:SEND"
 "SI::READFILE-INTERNAL calls ZETALISP:SEND"
 "SI::READFILE-INTERNAL calls ZETALISP:SEND"
 "SI::READFILE-INTERNAL calls FS:READ-ATTRIBUTE-LIST"
 "SI::READFILE-INTERNAL calls ZETALISP:SEND"
 "SI::READFILE-INTERNAL calls K-SYMBOL:REMF"
 "SI::READFILE-INTERNAL calls ZETALISP:LOCF"
 "SI::READFILE-INTERNAL calls IF"
 "SI::READFILE-INTERNAL calls FS:FILE-ATTRIBUTE-BINDINGS"
 "SI::READFILE-INTERNAL calls K-LISP-INTERNALS::PROGV"
 "SI::READFILE-INTERNAL calls IF"
 "SYSTEM:FASL-OP-NEW-FLOAT calls IF"
 "SYSTEM:FASL-OP-NEW-FLOAT calls IF"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%LOGDPB"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%MAKE-POINTER"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-LISP-INTERNALS::"
 "SYSTEM:FASL-OP-NEW-FLOAT calls IF"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%FLOAT-DOUBLE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls COMPILER::UNDEFINED-VALUE"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-NEW-FLOAT calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-STOREIN-SYMBOL-VALUE calls PUSH"
 "SYSTEM:FASL-OP-STOREIN-SYMBOL-VALUE calls PUSH"
 "SI::FASL-OP-VERSION-INFO calls ZETALISP:NEQ"
 "SI::FASL-OP-VERSION-INFO calls K-PRIMITIVES::FERROR"
 "SI::FASL-OP-VERSION-INFO calls K-PRIMITIVES::FERROR"
 "SYSTEM:GET-FILE-LOADED-ID calls K-LISP-INTERNALS::TYPEP"
 "SYSTEM:GET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SYSTEM:GET-FILE-LOADED-ID calls IF"
 "SYSTEM:GET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SYSTEM:GET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SYSTEM:GET-FILE-LOADED-ID calls IF"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls K-LISP-INTERNALS::CHECK-TYPE"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls K-GLOBAL::%P-MASK-FIELD"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls IF"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls ZETALISP:ALOC"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls K-GLOBAL::%P-STORE-DATA-TYPE"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls IF"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls K-LISP-INTERNALS::TYPEP"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls ZETALISP:NAMED-STRUCTURE-INVOKE"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls ZETALISP:NAMED-STRUCTURE-INVOKE"
 "SYSTEM:FASL-OP-INITIALIZE-ARRAY calls IF"
 "SI::CHECK-MACROS-EXPANDED calls ZETALISP:MACRO"
 "SI::CHECK-MACROS-EXPANDED calls K-VINCULUM::CONSP"
 "SI::CHECK-MACROS-EXPANDED calls ZETALISP:FDEFINEDP"
 "SI::CHECK-MACROS-EXPANDED calls COMPILER:EXPR-SXHASH"
 "SI::CHECK-MACROS-EXPANDED calls ZETALISP:NEQ"
 "SI::CHECK-MACROS-EXPANDED calls ZETALISP:SEND"
 "SI::CHECK-MACROS-EXPANDED calls PUSH"
 "SI::CHECK-MACROS-EXPANDED calls K-LISP-INTERNALS::DOLIST"
 "SI::CHECK-MACROS-EXPANDED calls ZETALISP:SEND"
 "SI::CHECK-MACROS-EXPANDED calls IF"
 "SI::CHECK-MACROS-EXPANDED calls FORMAT:OUTPUT"
 "SYSTEM:FEF-LIMIT-PC calls SYSTEM:FEF-LENGTH"
 "SYSTEM:FEF-LIMIT-PC calls SYSTEM:FEF-INSTRUCTION"
 "SYSTEM:FEF-LIMIT-PC calls IF"
 "SI::ALLOCATE-FASL-TABLE calls SI::SET-FILL-POINTER"
 "SI::ALLOCATE-FASL-TABLE calls K-LISP-INTERNALS::WITHOUT-INTERRUPTS"
 "SI::ALLOCATE-FASL-TABLE calls PUSH"
 "SYSTEM:FASL-OP-INITIALIZE-NUMERIC-ARRAY calls K-LISP-INTERNALS::CHECK-TYPE"
 "SYSTEM:FASL-OP-APPLY calls ZETALISP:VALUE-CELL-LOCATION"
 "SYSTEM:FASL-OP-APPLY calls ZETALISP:NCONS-IN-AREA"
 "SYSTEM:FASL-OP-APPLY calls PUSH"
 "SYSTEM:FASL-OP-APPLY calls PUSH"
 "SI::FEF-CONVERT-DESTINATIONS calls SYSTEM:FEF-INITIAL-PC"
 "SI::FEF-CONVERT-DESTINATIONS calls K-LISP-INTERNALS::"
 "SI::FEF-CONVERT-DESTINATIONS calls SYSTEM:FEF-INSTRUCTION"
 "SI::FEF-CONVERT-DESTINATIONS calls COMPILER::UNDEFINED-VALUE"
 "SI::FEF-CONVERT-DESTINATIONS calls COMPILER::UNDEFINED-VALUE"
 "SI::FEF-CONVERT-DESTINATIONS calls COMPILER::UNDEFINED-VALUE"
 "SI::FEF-CONVERT-DESTINATIONS calls IF"
 "SI::FEF-CONVERT-DESTINATIONS calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FEF-CONVERT-DESTINATIONS calls K-GLOBAL::%P-DPB-OFFSET"
 "SI::FEF-CONVERT-DESTINATIONS calls IF"
 "SI::FEF-CONVERT-DESTINATIONS calls IF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls IF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls ZETALISP:OPERATION-HANDLED-P"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls PUSH"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls ZETALISP:LOCF"
 "SI::FASLOAD-INTERNAL calls IF"
 "SI::FASLOAD-INTERNAL calls SI::PACKAGE-ROOT-NAME"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls FS:MERGE-PATHNAME-DEFAULTS"
 "SI::FASLOAD-INTERNAL calls ZETALISP:READFILE"
 "SI::FASLOAD-INTERNAL calls ZETALISP:LOCF"
 "SI::FASLOAD-INTERNAL calls K-LISP-INTERNALS::CERROR"
 "SI::FASLOAD-INTERNAL calls IF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:LOCF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls K-SYMBOL:REMF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:LOCF"
 "SI::FASLOAD-INTERNAL calls IF"
 "SI::FASLOAD-INTERNAL calls FS:FILE-ATTRIBUTE-BINDINGS"
 "SI::FASLOAD-INTERNAL calls IF"
 "SI::FASLOAD-INTERNAL calls ZETALISP:SEND"
 "SI::FASLOAD-INTERNAL calls K-LISP-INTERNALS::PROGV"
 "SI::FASLOAD-INTERNAL calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-FLOAT calls IF"
 "SYSTEM:FASL-OP-EVAL1 calls PUSH"
 "SYSTEM:FASL-OP-EVAL1 calls K-VINCULUM::CONSP"
 "SYSTEM:FASL-OP-EVAL1 calls ZETALISP:DEBUGGING-INFO"
 "SYSTEM:FASL-OP-EVAL1 calls ZETALISP:IGNORE-ERRORS"
 "SYSTEM:FASL-OP-EVAL1 calls PUSH"
 "SYSTEM:FASL-OP-EVAL1 calls IF"
 "SYSTEM:FASL-OP-EVAL1 calls ZETALISP:NEQ"
 "SI::FASL-OP-FLOAT-FLOAT calls K-LISP-INTERNALS::FLOAT"
 "SI::FASL-OP-FLOAT-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SI::FASL-OP-FLOAT-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SI::FASL-OP-FLOAT-FLOAT calls K-GLOBAL::%LOGDPB"
 "SI::FASL-OP-FLOAT-FLOAT calls K-GLOBAL::%P-DPB-OFFSET"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-PRIMITIVES::DECF"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-PRIMITIVES::INCF"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-PRIMITIVES::INCF"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-PRIMITIVES::DECF"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-PRIMITIVES::INCF"
 "SI::FASL-NIBBLE-FROM-8BIT calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SYSTEM:SET-FILE-LOADED-ID calls K-LISP-INTERNALS::TYPEP"
 "SYSTEM:SET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SYSTEM:SET-FILE-LOADED-ID calls IF"
 "SYSTEM:SET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SYSTEM:SET-FILE-LOADED-ID calls ZETALISP:SEND"
 "SI::FASL-RESTART calls K-LISP-INTERNALS::"
 "SI::FASL-RESTART calls SYSTEM:SET-AREF"
 "SYSTEM:FASL-OP-FILE-PROPERTY-LIST calls ZETALISP:SEND"
 "SYSTEM:FASL-OP-FILE-PROPERTY-LIST calls ZETALISP:SEND"
 "SYSTEM:FASL-OP-FILE-PROPERTY-LIST calls ZETALISP:SEND"
 "SYSTEM:FASL-OP-FILE-PROPERTY-LIST calls PUSH"
 "SI:RECORD-FILE-DEFINITIONS calls K-LISP-INTERNALS::TYPEP"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:VARIABLE-BOUNDP"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls SI:NUNION-EQUAL"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls SI::OLD-DEF"
 "SI:RECORD-FILE-DEFINITIONS calls K-VINCULUM::CONSP"
 "SI:RECORD-FILE-DEFINITIONS calls K-VINCULUM::CONSP"
 "SI:RECORD-FILE-DEFINITIONS calls K-LISP-INTERNALS::DOLIST"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:VARIABLE-BOUNDP"
 "SI:RECORD-FILE-DEFINITIONS calls SI::ANALYZE-FILE"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:FDEFINEDP"
 "SI:RECORD-FILE-DEFINITIONS calls SYSTEM:FUNCTION-PARENT"
 "SI:RECORD-FILE-DEFINITIONS calls SI:GET-ALL-SOURCE-FILE-NAMES"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls K-LISP-INTERNALS::POP"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:SEND"
 "SI:RECORD-FILE-DEFINITIONS calls IF"
 "SI:RECORD-FILE-DEFINITIONS calls Y-OR-N-P"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:WITH-TIMEOUT"
 "SI:RECORD-FILE-DEFINITIONS calls ZETALISP:FUNDEFINE"
 "SI::RETURN-FASL-TABLE calls K-LISP-INTERNALS::TYPEP"
 "SI::RETURN-FASL-TABLE calls PUSH"
 "SI::RETURN-FASL-TABLE calls K-LISP-INTERNALS::WITHOUT-INTERRUPTS"
 "SYSTEM:FASL-OP-STOREIN-PROPERTY-CELL calls ZETALISP:PROPERTY-CELL-LOCATION"
 "SYSTEM:FASL-OP-STOREIN-PROPERTY-CELL calls PUSH"
 "SYSTEM:FASL-OP-STOREIN-PROPERTY-CELL calls PUSH"
 "SYSTEM:FASL-OP-SYMBOL calls SI::FASL-OP-SYMBOL-GET-STRING"
 "SYSTEM:FASL-OP-SYMBOL calls ZETALISP:ARRAY-LENGTH"
 "SYSTEM:FASL-OP-SYMBOL calls K-LISP-INTERNALS::"
 "SYSTEM:FASL-OP-SYMBOL calls ZETALISP:ARRAY-LENGTH"
 "SYSTEM:FASL-OP-SYMBOL calls SI::SET-FILL-POINTER"
 "SYSTEM:FASL-OP-SYMBOL calls ZETALISP:STRING-APPEND"
 "SYSTEM:FASL-OP-SYMBOL calls ZETALISP:STRING-APPEND"
 "SYSTEM:FASL-OP-COMPLEX calls K-LISP-INTERNALS::COMPLEX"
 "SI::FASL-NEXT-NIBBLE calls K-PRIMITIVES::FERROR"
 "SI::FASL-NEXT-NIBBLE calls IF"
 "SYSTEM:FASL-OP-ERR calls K-PRIMITIVES::FERROR"
 "SI::DOTIFY calls K-GLOBAL::%P-CDR-CODE"
 "SI::DOTIFY calls K-PRIMITIVES::FERROR"
 "SI::DOTIFY calls K-GLOBAL::%P-STORE-CDR-CODE"
 "SI::DOTIFY calls K-GLOBAL::%P-DPB-OFFSET"
 "SI::FASL-START calls ZETALISP:VARIABLE-BOUNDP"
 "SI::FASL-START calls K-LISP-INTERNALS::"
 "SI::FASL-START calls SYSTEM:SET-AREF"
 "SI:QFASL-STREAM-PROPERTY-LIST calls ZETALISP:MAKE-INSTANCE"
 "SI:QFASL-STREAM-PROPERTY-LIST calls ZETALISP:OPERATION-HANDLED-P"
 "SI:QFASL-STREAM-PROPERTY-LIST calls ZETALISP:SEND"
 "SI:QFASL-STREAM-PROPERTY-LIST calls ZETALISP:SEND"
 "SI:QFASL-STREAM-PROPERTY-LIST calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-FRAME calls SYSTEM:%MAKE-STRUCTURE"
 "SYSTEM:FASL-OP-FRAME calls K-LISP-INTERNALS::"
 "SYSTEM:FASL-OP-FRAME calls K-LISP-INTERNALS::"
 "SYSTEM:FASL-OP-FRAME calls SI::MAYBE-CHANGE-FEF-TYPE"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:LETF"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls SYSTEM:FEF-DEBUGGING-INFO-PRESENT-P"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:LETF"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:FUNCTION-NAME"
 "SYSTEM:FASL-OP-FRAME calls IF"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%MAKE-POINTER-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-STORE-CONTENTS-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:BIT-TEST"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:BIT-TEST"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls ZETALISP:BIT-TEST"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DPB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-LDB-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-CONTENTS-AS-LOCATIVE-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%FIND-STRUCTURE-HEADER"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-DATA-TYPE"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%MAKE-POINTER-OFFSET"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-POINTER"
 "SYSTEM:FASL-OP-FRAME calls K-GLOBAL::%P-STORE-TAG-AND-POINTER"
 "ZETALISP:FASLOAD calls FS:MERGE-PATHNAME-DEFAULTS"
 "ZETALISP:FASLOAD calls SI:PATHNAME-DEFAULT-BINARY-FILE-TYPE"
 "ZETALISP:FASLOAD calls FS:MERGE-AND-SET-PATHNAME-DEFAULTS"
 "ZETALISP:FASLOAD calls K-LISP-INTERNALS::STREAM"
 "ZETALISP:FASLOAD calls WITH-OPEN-FILE"
 "SI::QFASL-FILE-PLIST calls K-LISP-INTERNALS::STREAM"
 "SI::QFASL-FILE-PLIST calls WITH-OPEN-FILE"
 "SYSTEM:FEF-INSTRUCTION-LENGTH calls SYSTEM:FEF-INSTRUCTION"
 "ZETALISP:FASL-APPEND calls FS:MERGE-PATHNAME-DEFAULTS"
 "ZETALISP:FASL-APPEND calls SI::OSTREAM"
 "ZETALISP:FASL-APPEND calls FS:MERGE-PATHNAME-DEFAULTS"
 "ZETALISP:FASL-APPEND calls SI::ISTREAM"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls WITH-OPEN-FILE"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls ZETALISP:SEND"
 "ZETALISP:FASL-APPEND calls WITH-OPEN-FILE"
 "SI::FASL-TOP-LEVEL calls IF"
 "SYSTEM:FASL-OP-STOREIN-ARRAY-LEADER calls SYSTEM:SET-ARRAY-LEADER"
 "ZETALISP:ASSIGN-VALUES calls PROCLAIM"
 "SYSTEM:FASL-OP-STOREIN-FUNCTION-CELL calls ZETALISP:FSET-CAREFULLY"
 "SYSTEM:FASL-OP-STOREIN-FUNCTION-CELL calls PUSH"
 "SI::FASL-RECORD-FILE-MACROS-EXPANDED calls ZETALISP:SEND"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls ZETALISP:SEND"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls SI::FASL-STREAM-ARRAY"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls ZETALISP:SEND"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls ZETALISP:MULTIPLE-VALUE"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-PRIMITIVES::INCF"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-PRIMITIVES::DECF"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-PRIMITIVES::INCF"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-PRIMITIVES::DECF"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls ZETALISP:SEND"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls ZETALISP:SEND"
 "SI::FASL-NIBBLE-FROM-8BIT-SLOW calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SI::INITIALIZE-FASL-TABLE calls SYSTEM:SET-AREF"
 "SYSTEM:FASL-OP-FETCH-FUNCTION-CELL calls ZETALISP:FUNCTION-CELL-LOCATION"
 "SYSTEM:FASL-OP-FETCH-FUNCTION-CELL calls ZETALISP:CONTENTS"
 "SYSTEM:FASL-OP-ARRAY calls IF"
 "SYSTEM:FASL-OP-ARRAY calls K-VINCULUM::CONSP"
 "SYSTEM:FASL-OP-ARRAY calls IF"
 "SYSTEM:FASL-OP-ARRAY calls K-VINCULUM::CONSP"
 "SYSTEM:FASL-OP-ARRAY calls IF"
 "SYSTEM:FASL-OP-FIXED calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SI::FASL-GROUP calls K-PRIMITIVES::FERROR"
 "SYSTEM:FASL-OP-MOVE calls SYSTEM:SET-AREF"
 "SYSTEM:FASL-OP-MOVE calls IF"
 "SYSTEM:FASL-OP-CHARACTER calls K-GLOBAL::%MAKE-POINTER"
 "SYSTEM:FASL-OP-CHARACTER calls K-NEW-MATH::FIELD-PASS-GENERIC"
 "SYSTEM:FASL-OP-PACKAGE-SYMBOL calls ZETALISP:"
 "SYSTEM:FASL-OP-PACKAGE-SYMBOL calls IF"
 "SYSTEM:FASL-OP-PACKAGE-SYMBOL calls ZETALISP:"
 "SYSTEM:FASL-OP-PACKAGE-SYMBOL calls IF")
|#
;NIL



;;; notes

;;; fix hot-boot stuff in WARM-BOOT and HOT-BOOT

;;; put all defconstants into HARDWARE-CONSTANTS so we don't have to read the K files into the lambda
