X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Ftarget-load.lisp;h=25eb0ba1c5d5f23ace9bd79f59038961e39d9c9c;hb=6c765578c8dc4bcc7798e37c9918715f198b30da;hp=17a69b714c8b183edb654d9d1d9f6a022637dfb9;hpb=fa8962d732057015fbb9a2f8a08ea8d5299b50dd;p=sbcl.git diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index 17a69b7..25eb0ba 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -142,7 +142,7 @@ ;;; take effect. If the compiler is loaded, we make the ;;; compiler-policy local to LOAD by binding it to itself. ;;; -;;; FIXME: ANSI specifies an EXTERNAL-FORMAT keyword argument. +;;; FIXME: ANSI specifies a &KEY :EXTERNAL-FORMAT argument. ;;; ;;; FIXME: Daniel Barlow's ilsb.tar ILISP-for-SBCL patches contain an ;;; implementation of "DEFUN SOURCE-FILE" which claims, in a comment, that CMU @@ -170,11 +170,19 @@ source, the result of evaluating each top-level form is printed. The default is *LOAD-PRINT*." - (let ((sb!c::*policy* sb!c::*policy*) - (sb!c::*interface-policy* sb!c::*interface-policy*) + (let ((*load-depth* (1+ *load-depth*)) + ;; KLUDGE: I can't find in the ANSI spec where it says that + ;; DECLAIM/PROCLAIM of optimization policy should have file + ;; scope. CMU CL did this, and it seems reasonable, but it + ;; might not be right; after all, things like (PROCLAIM '(TYPE + ;; ..)) don't have file scope, and I can't find anything under + ;; PROCLAIM or COMPILE-FILE or LOAD or OPTIMIZE which + ;; justifies this behavior. Hmm. -- WHN 2001-04-06 + (sb!c::*policy* sb!c::*policy*) + ;; The ANSI spec for LOAD says "LOAD binds *READTABLE* and + ;; *PACKAGE* to the values they held before loading the file." (*package* (sane-package)) (*readtable* *readtable*) - (*load-depth* (1+ *load-depth*)) ;; The old CMU CL LOAD function used an IF-DOES-NOT-EXIST argument of ;; (MEMBER :ERROR NIL) type. ANSI constrains us to accept a generalized ;; boolean argument value for this externally-visible function, but the