X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcheckgen.lisp;h=3ee6da795724b86396717b6d229b0dd1df3b5ad3;hb=a74b0bdb483504f6faddf8089f848f61ed94b92a;hp=8b43ae35c438139f8edf80b9126b9dfd9187a297;hpb=7ce2c42adf3d62f03086de940adaee48e6161a40;p=sbcl.git diff --git a/src/compiler/checkgen.lisp b/src/compiler/checkgen.lisp index 8b43ae3..3ee6da7 100644 --- a/src/compiler/checkgen.lisp +++ b/src/compiler/checkgen.lisp @@ -117,21 +117,15 @@ ;;;; checking strategy determination ;;; Return the type we should test for when we really want to check -;;; for TYPE. If speed, space or compilation speed is more important -;;; than safety, then we return a weaker type if it is easier to -;;; check. First we try the defined type weakenings, then look for any -;;; predicate that is cheaper. +;;; for TYPE. If type checking policy is "fast", then we return a +;;; weaker type if it is easier to check. First we try the defined +;;; type weakenings, then look for any predicate that is cheaper. (defun maybe-weaken-check (type policy) (declare (type ctype type)) - (cond ((policy policy (zerop safety)) - *wild-type*) - ((policy policy - (and (<= speed safety) - (<= space safety) - (<= compilation-speed safety))) - type) - (t - (weaken-values-type type)))) + (ecase (policy policy type-check) + (0 *wild-type*) + (2 (weaken-values-type type)) + (3 type))) ;;; This is like VALUES-TYPES, only we mash any complex function types ;;; to FUNCTION.