;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 126.25
;;; Reason:
;;;  The COMPILATION-DEFINE mechanism now knows about COMPILATION-ENVIRONMENTs
;;;  ... sort-of.
;;; Written 9-Aug-88 20:26:22 by smh (Steve Haflich) at site Gigamos Cambridge
;;; while running on Harpo from band 3
;;; with Experimental System 126.23, ZWEI 125.14, ZMail 73.2, Local-File 75.2, File-Server 24.1, Unix-Interface 13.0, Tape 24.2, Lambda-Diag 17.0, microcode 1762, SDU Boot Tape 3.12, SDU ROM 102, kold 4aug88.



; From modified file DJ: L.SYS; QCDEFS.LISP#244 at 9-Aug-88 20:26:32
#8R COMPILER#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "COMPILER")))
  (PATCH-SOURCE-FILE "SYS: SYS; QCDEFS  "

(DEFUN COMPILATION-DEFINE (FUNCTION-SPEC)
  "Record that a definition of FUNCTION-SPEC has been compiled."
  (let ((value (OR FDEFINE-FILE-PATHNAME T)))
    (if (and (boundp '*compilation-environment*)
	     *compilation-environment*)
	(do ((env *compilation-environment* (compilation-environment-next env)))
	    ((null (compilation-environment-next env))
	     (setf (getf (gethash function-spec (compilation-environment-plist-hashtab env))
			 ':compilation-defined)
		   value)))
      (OR (CONSP FUNCTION-SPEC)
	  (SI:FUNCTION-SPEC-PUTPROP FUNCTION-SPEC value ':COMPILATION-DEFINED)))))

(DEFUN COMPILATION-DEFINEDP (FUNCTION-SPEC)
  "T if the function spec is defined or a definition of it has been compiled.
Always returns T if function spec is not a symbol."
  (if (boundp '*compilation-environment*)
      (do ((env *compilation-environment* (compilation-environment-next env))
	   tem)
	  ((null env))
	(when (and (setq tem (gethash function-spec (compilation-environment-plist-hashtab env)))
		   (setq tem (getf tem ':compilation-defined)))
	  (return-from compilation-definedp tem)))
    (OR (CONSP FUNCTION-SPEC)
	(AND FUNCTION-SPEC
	     (OR (FDEFINEDP FUNCTION-SPEC)
		 (NOT (MEMQ (SI:FUNCTION-SPEC-GET FUNCTION-SPEC ':COMPILATION-DEFINED)
			    '(NIL :UNDEFINED))))))))

))
