X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fbyte-comp.lisp;h=63e9885a58a9b11c75f456f4a788126486ec0bf8;hb=872175cd9cb5b4966a36d4bd92421cc407a0355b;hp=912ea91d4dcac65cc53d4196cf0e91d2c39f3fea;hpb=d147d512602d761a2dcdfded506dd1a8f9a140dc;p=sbcl.git diff --git a/src/compiler/byte-comp.lisp b/src/compiler/byte-comp.lisp index 912ea91..63e9885 100644 --- a/src/compiler/byte-comp.lisp +++ b/src/compiler/byte-comp.lisp @@ -12,12 +12,6 @@ (in-package "SB!C") -;;;; the fasl file format that we use -(defconstant byte-fasl-file-version 3) -;;; 1 = before about sbcl-0.6.9.8 -;;; 2 = merged package SB-CONDITIONS into SB-KERNEL around sbcl-0.6.9.8 -;;; 3 = deleted obsolete CONS-UNIQUE-TAG bytecode in sbcl-0.6.11.8 - ;;; ### remaining work: ;;; ;;; - add more inline operations. @@ -149,7 +143,8 @@ (def-system-constant 14 '(%fdefinition-marker% . %negate)) (def-system-constant 15 '(%fdefinition-marker% . %%defun)) (def-system-constant 16 '(%fdefinition-marker% . %%defmacro)) - (def-system-constant 17 '(%fdefinition-marker% . %%defconstant)) + ;; no longer used as of sbcl-0.pre7: + #+nil (def-system-constant 17 '(%fdefinition-marker% . %%defconstant)) (def-system-constant 18 '(%fdefinition-marker% . length)) (def-system-constant 19 '(%fdefinition-marker% . equal)) (def-system-constant 20 '(%fdefinition-marker% . append)) @@ -488,7 +483,7 @@ (let ((leaf (ref-leaf (continuation-use fun)))) (and (slot-accessor-p leaf) (or (policy call (zerop safety)) - (not (find 't args + (not (find t args :key #'continuation-type-check))) (if (consp name) (not (continuation-dest (node-cont call))) @@ -640,8 +635,8 @@ (ecase (cleanup-kind (nlx-info-cleanup nlx-info)) ((:catch :unwind-protect) (consume :nlx-entry)) - ;; If for a lexical exit, we will see a breakup later, so - ;; don't consume :NLX-ENTRY now. + ;; If for a lexical exit, we will see a breakup + ;; later, so don't consume :NLX-ENTRY now. (:tagbody) (:block (let ((cont (nlx-info-continuation nlx-info))) @@ -790,6 +785,7 @@ ;;; we reach the mess-up node. After then, we can keep the values from ;;; being discarded by placing a marker on the simulated stack. (defun byte-stack-analyze (component) + (declare (notinline find)) ; to avoid bug 117 bogowarnings (let ((head nil)) (let ((*byte-continuation-counter* 0)) (do-blocks (block component) @@ -1071,7 +1067,7 @@ ;;; values to a continuation. If this continuation needs a type check, ;;; and has a single value, then we do a type check. We also ;;; CANONICALIZE-VALUES for the continuation's desired number of -;;; values (w/o the placeholders.) +;;; values (without the placeholders.) ;;; ;;; Somewhat unrelatedly, we also push placeholders for deleted ;;; arguments to local calls. Although we check first, the actual @@ -1215,7 +1211,8 @@ (output-push-fdefinition segment (if (and found - (= (length (combination-args (continuation-dest cont))) + (= (length (basic-combination-args + (continuation-dest cont))) 2)) found name)))) @@ -1865,9 +1862,9 @@ ;; Process all of the lambdas in component, and assign stack frame ;; locations for all the locals. (dolist (lambda (component-lambdas component)) - ;; We don't generate any code for :external lambdas, so we don't need - ;; to allocate stack space. Also, we don't use the ``more'' entry, - ;; so we don't need code for it. + ;; We don't generate any code for :EXTERNAL lambdas, so we don't + ;; need to allocate stack space. Also, we don't use the ``more'' + ;; entry, so we don't need code for it. (cond ((or (eq (lambda-kind lambda) :external) (and (eq (lambda-kind lambda) :optional) @@ -1931,12 +1928,12 @@ ;; stay in the argument area and which need to be moved into locals. (assign-locals component) - ;; Annotate every continuation with information about how we want the - ;; values. + ;; Annotate every continuation with information about how we want + ;; the values. (annotate-ir1 component) - ;; Determine what stack values are dead, and emit cleanup code to pop - ;; them. + ;; Determine what stack values are dead, and emit cleanup code to + ;; pop them. (byte-stack-analyze component) ;; Make sure any newly added blocks have a block-number. @@ -1972,13 +1969,12 @@ (xeps (generate-xeps component)) (constants (byte-component-info-constants (component-info component)))) - #!+sb-show (when *compiler-trace-output* (describe-component component *compiler-trace-output*) (describe-byte-component component xeps segment *compiler-trace-output*)) (etypecase *compile-object* - (fasl-file + (fasl-output (maybe-mumble "FASL") (fasl-dump-byte-component segment code-length constants xeps *compile-object*))