X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir1tran.lisp;h=6c6cbe771671c429448c144e0c2dbfe811abfbee;hb=31361af9eb64344f521abbb245ea784c76c746e5;hp=8c63c71cf3bcae368b0680e42cc160430d486da7;hpb=6879a37a9e6cceeab810636c5ef4a4da1444e275;p=sbcl.git diff --git a/src/compiler/ir1tran.lisp b/src/compiler/ir1tran.lisp index 8c63c71..6c6cbe7 100644 --- a/src/compiler/ir1tran.lisp +++ b/src/compiler/ir1tran.lisp @@ -48,19 +48,12 @@ (defvar *converting-for-interpreter* nil) ;;; FIXME: Rename to *IR1-FOR-INTERPRETER-NOT-COMPILER-P*. -;;; FIXME: This nastiness was one of my original motivations to start -;;; hacking CMU CL. The non-ANSI behavior can be useful, but it should -;;; be made not the default, and perhaps should be controlled by -;;; DECLAIM instead of a variable like this. And whether or not this -;;; kind of checking is on, declarations should be assertions to the -;;; extent practical, and code which can't be compiled efficiently -;;; while adhering to that principle should give warnings. -(defvar *derive-function-types* t - #!+sb-doc - "(Caution: Soon, this might change its semantics somewhat, or even go away.) - If true, argument and result type information derived from compilation of - DEFUNs is used when compiling calls to that function. If false, only - information from FTYPE proclamations will be used.") +(defvar *derive-function-types* nil + "Should the compiler assume that function types will never change, + so that it can use type information inferred from current definitions + to optimize code which uses those definitions? Setting this true + gives non-ANSI, early-CMU-CL behavior. It can be useful for improving + the efficiency of stable code.") ;;;; namespace management utilities @@ -2042,7 +2035,8 @@ deprecated-names))) (let* ((do-eval (and (intersection '(compile :compile-toplevel) situations) - (not sb!eval::*already-evaled-this*))) + #!+sb-interpreter (not sb!eval::*already-evaled-this*))) + #!+sb-interpreter (sb!eval::*already-evaled-this* t)) (when do-eval