;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for Lambda-Diag version 15.1
;;; Reason:
;;;  When you boot up with a different microcode version and load LAM symbols, you
;;;  end up with multiple LAM symbol tables.  Usually, you only want the current
;;;  one.  On a :system-release full GC, offer to remove the extras.
;;; Written 19-May-88 22:00:31 by pld (Peter L. DeWolf) at site Gigamos Cambridge
;;; while running on Fish food from band 1
;;; with Experimental System 123.284, Experimental Local-File 73.6, Experimental FILE-Server 22.6, Experimental Unix-Interface 11.0, Experimental KERMIT 34.3, Experimental ZMail 71.2, Experimental Lambda-Diag 15.0, Experimental Tape 22.4, microcode 1756, SDU Boot Tape 3.14, SDU ROM 103, patch/experimental.



; From file DJ: L.LAMBDA-DIAG; LAMLD.LISP#10 at 19-May-88 22:00:49
#8R LAMBDA#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "LAMBDA")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: LAMBDA-DIAG; LAMLD  "

(defun maybe-remove-extra-lam-symbol-tables ()
  (when lam-file-symbols-loaded-from
    (let ((extras (cl:remove lam-file-symbols-loaded-from lam-symbol-tables-loaded :key #'car)))
      (when extras
	(when (format:y-or-n-p-with-timeout 1800. t
		"Current LAM symbols are for version ~D, but extra versions also loaded: ~{~D~^, ~}~%~
      Remove extras? "
		(send lam-file-symbols-loaded-from :version)
		(mapcar #'(lambda (elt)
			    (send (car elt) :version))
			extras))
	  (setq lam-symbol-tables-loaded (cl:remove-if #'(lambda (elt)
							   (member elt extras)) lam-symbol-tables-loaded)))))))

(add-initialization "Maybe Remove Extra LAM Symbols"
		    '(maybe-remove-extra-lam-symbol-tables)
		    '(:gc-system-release))

))
