X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftarget-main.lisp;h=aa011e1a84308c4da53a1c7bb97ac64aa056374c;hb=95591ed483dbb8c0846c129953acac1554f28809;hp=78b8d035c30dd126a85bf6ec2472a08449d20ffe;hpb=d604a358d8e5eb5587989e0a4f1d31dbe6ac5ffe;p=sbcl.git diff --git a/src/compiler/target-main.lisp b/src/compiler/target-main.lisp index 78b8d03..aa011e1 100644 --- a/src/compiler/target-main.lisp +++ b/src/compiler/target-main.lisp @@ -45,10 +45,12 @@ ;; need *BACKEND-INFO-ENVIRONMENT*. (*info-environment* *info-environment*) (form (get-lambda-to-compile definition)) - (*source-info* (make-lisp-source-info form)) + (*source-info* (make-lisp-source-info form :parent *source-info*)) (*toplevel-lambdas* ()) (*block-compile* nil) (*allow-instrumenting* nil) + (*code-coverage-records* nil) + (*code-coverage-blocks* nil) (*compiler-error-bailout* (lambda (&optional error) (declare (ignore error)) @@ -62,6 +64,7 @@ (*last-format-string* nil) (*last-format-args* nil) (*last-message-count* 0) + (*last-error-context* nil) (*gensym-counter* 0) ;; KLUDGE: This rebinding of policy is necessary so that ;; forms such as LOCALLY at the REPL actually extend the @@ -93,9 +96,15 @@ (defun compile-in-lexenv (name definition lexenv) (multiple-value-bind (compiled-definition warnings-p failure-p) - (if (compiled-function-p definition) - (values definition nil nil) - (actually-compile name definition lexenv)) + (cond + #!+sb-eval + ((sb!eval:interpreted-function-p definition) + (multiple-value-bind (definition lexenv) + (sb!eval:prepare-for-compile definition) + (actually-compile name definition lexenv))) + ((compiled-function-p definition) + (values definition nil nil)) + (t (actually-compile name definition lexenv))) (cond (name (if (and (symbolp name) (macro-function name))