X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fproclaim.lisp;h=0a7dcb6ca937ba4b11891e3187bfe043ff5a699c;hb=2010727926b091b23a246f6f659be61e27e19667;hp=0a6e7e385232a8d8701cc5b94022b5e7a884a4c4;hpb=0a82f2db352cc348d2107a882e50af222ff97ed3;p=sbcl.git diff --git a/src/compiler/proclaim.lisp b/src/compiler/proclaim.lisp index 0a6e7e3..0a7dcb6 100644 --- a/src/compiler/proclaim.lisp +++ b/src/compiler/proclaim.lisp @@ -19,7 +19,7 @@ (defvar *undefined-warnings*) (declaim (list *undefined-warnings*)) -;;; Look up some symbols in *FREE-VARIABLES*, returning the var +;;; Look up some symbols in *FREE-VARS*, returning the var ;;; structures for any which exist. If any of the names aren't ;;; symbols, we complain. (declaim (ftype (function (list) list) get-old-vars)) @@ -28,7 +28,7 @@ (dolist (name names (vars)) (unless (symbolp name) (compiler-error "The name ~S is not a symbol." name)) - (let ((old (gethash name *free-variables*))) + (let ((old (gethash name *free-vars*))) (when old (vars old)))))) ;;; Return a new POLICY containing the policy information represented @@ -45,14 +45,14 @@ (destructuring-bind (quality raw-value) q-and-v-or-just-q (values quality raw-value))) (cond ((not (policy-quality-name-p quality)) - (compiler-warning "ignoring unknown optimization quality ~ - ~S in ~S" - quality spec)) - ((not (and (typep raw-value 'real) (<= 0 raw-value 3))) - (compiler-warning "ignoring bad optimization value ~S in ~S" - raw-value spec)) + (compiler-warn "ignoring unknown optimization quality ~ + ~S in ~S" + quality spec)) + ((not (typep raw-value 'policy-quality)) + (compiler-warn "ignoring bad optimization value ~S in ~S" + raw-value spec)) (t - (push (cons quality (rational raw-value)) + (push (cons quality raw-value) result))))) ;; Add any nonredundant entries from old POLICY. (dolist (old-entry policy) @@ -81,6 +81,8 @@ decl-spec))))) (defun sb!xc:proclaim (raw-form) + #+sb-xc (/show0 "entering PROCLAIM, RAW-FORM=..") + #+sb-xc (/hexstr raw-form) (let* ((form (canonized-decl-spec raw-form)) (kind (first form)) (args (rest form))) @@ -121,8 +123,8 @@ ;; when we have to ignore a PROCLAIM because the type system is ;; uninitialized. (when *type-system-initialized* - (let ((type (specifier-type (first args)))) - (unless (csubtypep type (specifier-type 'function)) + (let ((ctype (specifier-type (first args)))) + (unless (csubtypep ctype (specifier-type 'function)) (error "not a function type: ~S" (first args))) (dolist (name (rest args)) @@ -140,26 +142,26 @@ #| (when (eq (info :function :where-from name) :declared) (let ((old-type (info :function :type name))) - (when (type/= type old-type) + (when (type/= ctype old-type) (style-warn "new FTYPE proclamation~@ ~S~@ for ~S does not match old FTYPE proclamation~@ ~S" - (list type name old-type))))) + (list ctype name old-type))))) |# ;; Now references to this function shouldn't be warned ;; about as undefined, since even if we haven't seen a - ;; definition yet, we know one is planned. (But if this - ;; function name was already declared as a structure - ;; accessor, then that was already been taken care of.) - (unless (info :function :accessor-for name) - (proclaim-as-fun-name name) - (note-name-defined name :function)) + ;; definition yet, we know one is planned. + ;; + ;; Other consequences of we-know-you're-a-function-now + ;; are appropriate too, e.g. any MACRO-FUNCTION goes away. + (proclaim-as-fun-name name) + (note-name-defined name :function) ;; the actual type declaration - (setf (info :function :type name) type + (setf (info :function :type name) ctype (info :function :where-from name) :declared))))) (freeze-type (dolist (type args) @@ -175,9 +177,7 @@ (setq *policy* (process-optimize-decl form *policy*))) ((inline notinline maybe-inline) (dolist (name args) - ;; (CMU CL did (PROCLAIM-AS-FUN-NAME NAME) here, but that - ;; seems more likely to surprise the user than to help him, so - ;; we don't do it.) + (proclaim-as-fun-name name) ; since implicitly it is a function (setf (info :function :inlinep name) (ecase kind (inline :inline) @@ -192,5 +192,6 @@ (setf (info :declaration :recognized decl) t))) (t (unless (info :declaration :recognized kind) - (compiler-warning "unrecognized declaration ~S" raw-form))))) + (compiler-warn "unrecognized declaration ~S" raw-form))))) + #+sb-xc (/show0 "returning from PROCLAIM") (values))