;;; -*- 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-BOOTSTRAP) (FORM) (MAPC (LAMBDA (X) (REMPROP X 'SPECIAL)) (CDR FORM)) T) (EVAL-WHEN (EVAL COMPILE) (DEFVAR *BOOTSTRAP-SPECIAL-FORMS*)) (SETQ *BOOTSTRAP-SPECIAL-FORMS* '( AND ;EVAL BLOCK ;EVAL CATCH ;EVAL COMMENT ;EVAL COMPILER-LET ;EVAL COMPILER::CASEN ;EVAL COND ;EVAL DECLARE ;EVAL DEFCONST-1 ;LTOP DEF ;QFCTNS DEFF ;QFCTNS DEFF-MACRO ;QFCTNS DEFSUBST ;QFCTNS DEFUN ;QFCTNS DEFPROP ;QRAND DEFVAR-1 ;LTOP DO ;EVAL DO-NAMED ;EVAL DO* ;EVAL DO*-NAMED ;EVAL DONT-OPTIMIZE ;EVAL EVAL-WHEN ;EVAL FLET ;EVAL FUNCTION ;EVAL GO ;EVAL IF ;EVAL LABELS ;EVAL LAMBDA ;EVAL LET ;EVAL LET* ;EVAL LET-IF ;EVAL LETF ;EVAL LETF* ;EVAL LETF-IF ;EVAL LOCALLY ;EVAL MACRO ;QFCTNS MACROLET ;EVAL MULTIPLE-VALUE-BIND ;EVAL MULTIPLE-VALUE-CALL ;EVAL MULTIPLE-VALUE-LIST ;EVAL MULTIPLE-VALUE-PROG1 ;EVAL MULTIPLE-VALUE-SETQ ;EVAL NTH-VALUE ;EVAL OR ;EVAL PROG ;EVAL PROG* ;EVAL PROGN ;EVAL PROGV ;EVAL PROGW ;EVAL QUOTE ;EVAL RETURN ;EVAL RETURN-FROM ;EVAL SETQ ;EVAL SIGNP ;QFCTNS SPECIAL ;FIRST TAGBODY ;EVAL THE ;EVAL THROW ;EVAL UNSPECIAL ;FIRST UNWIND-PROTECT ;EVAL VARIABLE-BOUNDP ;EVAL VARIABLE-LOCATION ;EVAL VARIABLE-MAKUNBOUND ;EVAL WITH-STACK-LIST ;EVAL WITH-STACK-LIST* ;EVAL )) (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*)