X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fltv.lisp;h=9ed48c8743a07206013ffd7327bc954e8bb759b4;hb=787090e008e13b1c91ba04cf7776ca0af7336342;hp=af6922d4ecf5eb5780a9d81cea6fefbf9f7a912d;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/compiler/ltv.lisp b/src/compiler/ltv.lisp index af6922d..9ed48c8 100644 --- a/src/compiler/ltv.lisp +++ b/src/compiler/ltv.lisp @@ -11,12 +11,10 @@ (in-package "SB!C") -(file-comment - "$Header$") - (defknown %load-time-value (t) t (flushable movable)) -(def-ir1-translator load-time-value ((form &optional read-only-p) start cont) +(def-ir1-translator load-time-value + ((form &optional read-only-p) start next result) #!+sb-doc "Arrange for FORM to be evaluated at load-time and use the value produced as if it were a constant. If READ-ONLY-P is non-NIL, then the resultant @@ -28,7 +26,7 @@ form `(make-value-cell ,form))) (declare (ignore type)) - (ir1-convert start cont + (ir1-convert start next result (if read-only-p `(%load-time-value ',handle) `(value-cell-ref (%load-time-value ',handle))))) @@ -37,14 +35,14 @@ (error (condition) (compiler-error "(during EVAL of LOAD-TIME-VALUE)~%~A" condition))))) - (ir1-convert start cont + (ir1-convert start next result (if read-only-p `',value `(value-cell-ref ',(make-value-cell value))))))) (defoptimizer (%load-time-value ir2-convert) ((handle) node block) - (assert (constant-continuation-p handle)) - (let ((cont (node-cont node)) - (tn (make-load-time-value-tn (continuation-value handle) + (aver (constant-lvar-p handle)) + (let ((lvar (node-lvar node)) + (tn (make-load-time-value-tn (lvar-value handle) *universal-type*))) - (move-continuation-result node block (list tn) cont))) + (move-lvar-result node block (list tn) lvar)))