X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcheckgen.lisp;h=89a6cc4d46d17145c235b120b4e7aa6968edd32e;hb=39ecf3129db04ecf861c08459b6f5353bfc266c9;hp=373ba9f597565320bf5c6406c2c9441cfcf04d82;hpb=82e0a78df47685519b12683f495d7ae19e07d3cf;p=sbcl.git diff --git a/src/compiler/checkgen.lisp b/src/compiler/checkgen.lisp index 373ba9f..89a6cc4 100644 --- a/src/compiler/checkgen.lisp +++ b/src/compiler/checkgen.lisp @@ -249,7 +249,9 @@ ;;; We must only return NIL when it is *certain* that a check will not ;;; be done, since if we pass up this chance to do the check, it will ;;; be too late. The penalty for being too conservative is duplicated -;;; type checks. +;;; type checks. The penalty for erring by being too speculative is +;;; much nastier, e.g. falling through without ever being able to find +;;; an appropriate VOP. ;;; ;;; If there is a compile-time type error, then we always return true ;;; unless the DEST is a full call. With a full call, the theory is @@ -278,7 +280,7 @@ ((function-info-ir2-convert kind) t) (t (dolist (template (function-info-templates kind) nil) - (when (eq (template-policy template) :fast-safe) + (when (eq (template-ltn-policy template) :fast-safe) (multiple-value-bind (val win) (valid-function-use dest (template-type template)) (when (or val (not win)) (return t)))))))))