X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Ftarget-main.lisp;h=aa011e1a84308c4da53a1c7bb97ac64aa056374c;hb=5745b5a5b2e3b967bf3876b4306f31b3c78495fa;hp=f6e92de0a121ec6b920749c5f334c5c6e9f6e1ec;hpb=d754723f1d3238c582e9c6ca90435c579efaff17;p=sbcl.git diff --git a/src/compiler/target-main.lisp b/src/compiler/target-main.lisp index f6e92de..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)) @@ -94,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))