;;; -*- Mode:LISP; Package:SYSTEM-INTERNALS; Readtable:ZL; Base:10; COLD-LOAD: T -*- ;;; this is the first file in the cold load, so it has the first thing on the ;;; lisp-crash-list (to be evaluated) by lisp-reinitialize. ;;; When I changed how special forms worked I didnt know how much it was going ;;; to screw me in the cold load. Hence these kludges. ;;; Instead, if a file is COLD-LOAD:T all "eval-mungables" should be ;;; consed up into a single function to be called. This would make things ;;; initialize faster and with less bootstrapping hair. Like in VAX-NIL. (DEFUN (:PROPERTY SPECIAL SPECIAL-FORM-BOOTSTRAP) (FORM) (MAPC (LAMBDA (X) (SETF (GET X 'SPECIAL) T)) (CDR FORM)) T) (DEFUN (:PROPERTY UNSPECIAL SPECIAL-FORM-BOOSTRAP) (FORM) (MAPC (LAMBDA (X) (REMPROP X 'SPECIAL)) (CDR FORM)) T) (EVAL-WHEN (EVAL COMPILE) (DEFVAR *BOOTSTRAP-SPECIAL-FORMS*)) (SETQ *BOOTSTRAP-SPECIAL-FORMS* '(DEFF-MACRO DEFPROP DEFCONST-1 DEFVAR-1 CATCH COMMENT DECLARE EVAL-WHEN COMPILER-LET THE QUOTE SETQ VARIABLE-BOUNDP VARIABLE-LOCATION VARIABLE-MAKUNBOUND MULTIPLE-VALUE-SETQ NTH-VALUE MULTIPLE-VALUE-CALL MULTIPLE-VALUE-LIST MULTIPLE-VALUE-PROG1 MULTIPLE-VALUE-BIND DONT-OPTIMIZE LOCALLY PROGN WITH-STACK-LIST WITH-STACK-LIST* AND OR COND IF COMPILER::CASEN LET LET* FLET MACROLET LABELS PROGV PROGW LET-IF LETF LETF-IF LETF* UNWIND-PROTECT THROW BLOCK RETURN-FROM RETURN TAGBODY GO PROG PROG* DO DO-NAMED DO* DO*-NAMED FUNCTION LAMBDA SPECIAL UNSPECIAL )) (DEFUN INSTALL-BOOTSTRAP-SPECIAL-FORMS () (PUTPROP ':SPECIAL-FORM 'SPECIAL-FORM-FUNCTION-SPEC-HANDLER 'FUNCTION-SPEC-HANDLER) (DOLIST (X *BOOTSTRAP-SPECIAL-FORMS*) (function-spec-putprop `(:special-form ,x) (function-spec-get `(:property ,x special-form-bootstrap) :source-file-name) :source-file-name) (BOOTSTRAP-SPECIAL-FORM X))) (INSTALL-BOOTSTRAP-SPECIAL-FORMS) (DEFVAR *BOOTSTRAP-SPECIAL-FORMS*)