;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*- ;;; Patch file for System version 124.113 ;;; Reason: ;;; Problems with calls to DEFF in the cold load file QFCTNS. Many, but ;;; not all, DEFF calls referred to the load-time function binding of the ;;; true function argument. ;;; ;;; Example: (DEFF SAMEPNAMEP #'STRING=) ;;; ;;; Some of them were severe bugs, in that the actual functions were not ;;; defined at the time of the cold load of QFCTNS. (That is, the ;;; troublesome calls were forward references.) This means you get a bogus ;;; error FUNCALLing them. Even the "working" references were buggy, ;;; because redefining the actual function would not affect the synonym. ;;; ;;; Solution: change all DEFF calls in QFCTNS to use (QUOTE symbol), not ;;; (FUNCTION symbol). We will have to investigate other system files for ;;; this problem. ;;; ;;; Also, updated DEFF's documentation to warn against using a function as ;;; the argument rather than a symbol. ;;; Written 28-Jun-88 09:21:24 by keith (Keith Corbett) at site Gigamos Cambridge ;;; while running on Breaking Glass from band 2 ;;; with Experimental System 124.111, Experimental Local-File 74.3, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.1, Experimental Tape 23.6, Experimental Lambda-Diag 16.2, Tiger 28.0, microcode 1761, SDU Boot Tape 3.14, SDU ROM 103, Beta 3 plus patches. ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:29 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " ;;Hand-munged to affect doc-string only (setf (documentation 'deff 'function) "Define FUNCTION-SPEC with its definition being the value of DEFINITION. /(DEFF FOO '(LAMBDA (X) X)) is a useless but correct example; the compiler would not compile the LAMBDA. /(DEFF FOO 'BAR) makes FOO a synonym for BAR. /(DEFF FOO #'BAR) /"works/" but you probably don't want to do this - BAR *must* already be defined, and redefinitions of BAR will not affect FOO.") )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:37 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF COPY-LIST 'COPYLIST) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:37 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF COPY-ALIST 'COPYALIST) ;;; (SUBST NIL NIL ...) is such an ugly language idiom... )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:38 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFUN COPYTREE (TREE &OPTIONAL (DEFAULT-CONS-AREA DEFAULT-CONS-AREA)) "Copy list structure to all levels, creating a maximally cdr-coded structure." (IF (ATOM TREE) TREE (LET ((NEWTREE (COPY-LIST TREE))) (DO ((L NEWTREE (CDR L))) ((ATOM L)) (SETF (CAR L) (COPYTREE (CAR L)))) NEWTREE))) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:39 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF COPY-TREE 'COPYTREE) ;;; Copy an object, and the objects it points to, and ... )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:39 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (deff zl:union 'union-eq) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:40 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (deff zl:nunion 'nunion-eq) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:41 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (deff zl:intersection 'intersection-eq) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:42 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (deff zl:nintersection 'nintersection-eq) ;; Copied from LAD: RELEASE-3.SYS; QFCTNS.LISP#825 on 27-Mar-87 15:57:23 )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:43 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF MAP 'MAPL) ;; Copied from LAD: RELEASE-3.SYS; QFCTNS.LISP#825 on 27-Mar-87 15:57:28 )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:44 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF > 'GREATERP) ;(DEFUN LESSP (&REST NUMBERS) ; "Return T if the arguments are in strictly increasing numerical order." ; (DO ((A NIL C) ; (B NUMBERS (CDR B)) ; (C)) ; ((NULL B) T) ; (SETQ C (CAR B)) ; (OR (NULL A) (< A C) (RETURN NIL)))) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:45 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF < 'LESSP) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:46 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF  '<=) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:47 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF  '>=) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:47 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF  '//=) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:48 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF + 'PLUS) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:49 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF +$ 'PLUS) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:49 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF -$ '-) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:50 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF * 'TIMES) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:50 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF *$ 'TIMES) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:51 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF //$ '//) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:52 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF GCD '\\) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:53 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF ADD1 '1+) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:54 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF SUB1 '1-) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:55 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF 1+$ '1+) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:55 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF 1-$ '1-) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:56 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF REMAINDER '\) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:57 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF ^$ '^) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:57 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF EXPT '^) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:42:59 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF SAMEPNAMEP 'STRING=) )) ; From modified file DJ: L.SYS; QFCTNS.LISP#848 at 28-Jun-88 09:43:00 #8R SYSTEM-INTERNALS#: (COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS"))) (COMPILER::PATCH-SOURCE-FILE "SYS: SYS; QFCTNS  " (DEFF COPY-SYMBOL 'COPYSYMBOL) ))