;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 126.78 ;;; Reason: ;;; Change COMPILER:WARN to use COPY-TREE to push its &rest args onto list ;;; of compiler warnings. It was using SI:COPY-OBJECT-TREE to copy all ;;; levels of its args in temporary areas. With GC, this isn't needed; and, ;;; compile-time forms are usually simple enough, that we shouldn't have to ;;; be paranoid (and time-consuming) about copying 12 levels of structure! ;;; Another benefit: the modified definition will port. ;;; ;;; Also improve doc string, and mention new severity keyword :NOT-PORTABLE. ;;; Written 13-Sep-88 15:35:56 by keith (Keith Corbett) at site Gigamos Cambridge ;;; while running on Breaking Glass from band 3 ;;; with Experimental System 126.77, Experimental ZWEI 126.10, Experimental ZMail 74.1, Experimental Local-File 76.0, Experimental File-Server 25.0, Experimental Unix-Interface 14.0, Experimental Tape 25.1, Experimental Lambda-Diag 18.0, microcode 1762, SDU Boot Tape 3.14, SDU ROM 103, Lambda/Falcon Development System. ; From modified file DJ: L.SYS; QCFILE.LISP#377 at 13-Sep-88 15:35:56 #8R COMPILER#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "COMPILER"))) (PATCH-SOURCE-FILE "SYS: SYS; QCFILE  " (DEFUN COMPILER:WARN (TYPE SEVERITY FORMAT-STRING &REST ARGS) "Record and print a compiler warning. TYPE describes the particular kind of problem, such as FUNCTION-NOT-VALID. SEVERITY is a symbol in the keyword package giving a broader classification; see the source for a list of possible severities. FORMAT-STRING and ARGS are used to print the warning. / Severities include /(though are not limited to/): / :IMPLAUSIBLE - something that is not intrinsically wrong but is probably due to a mistake of some sort. :IMPOSSIBLE - something that cannot have a meaning. :MISSING-DECLARATION - free variable not declared special, usually. :PROBABLE-ERROR - something that is an error unless you have changed something else. :OBSOLETE - something that you shouldn't use any more. :VERY-OBSOLETE - similar to :OBSOLETE, only more so. :NOT-PORTABLE - code that may not be portable between LISP implementations. :ERROR - there was an error in reading or macro expansion. :FATAL - there was an error that prevents further compilation." (declare (zwei:indentation (2 1))) (APPLY #'SI:RECORD-AND-PRINT-WARNING TYPE SEVERITY NIL FORMAT-STRING ;;;>>>Don't need to worry about temp areas with Lambda GC. ;; (LET ((DEFAULT-CONS-AREA BACKGROUND-CONS-AREA)) ;; ;; Copy temp area data only; note that ARGS lives in PDL-AREA. ;; ;; on error for nonexistent package refname. ;; (MAPCAR (LAMBDA (ARG) (SI:COPY-OBJECT-TREE ARG T 12.)) ARGS)) ;;;Other systems don't put &rest args on stack, but args might get bashed ;;;during RECORD-WARNING's list-munging. So, 'tho I don't know if this is needed: ;;; -Keith (copy-tree args))) ))