X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir2tran.lisp;h=cf611d432588a580149a170ec8502f5a80eefca0;hb=4d58eac755342319f7a25391606fed86541e5fef;hp=7c4e321918777a86564573e36f3adfd063e0b346;hpb=7b384da95e6a30e1434523213aeeed3a90448c78;p=sbcl.git diff --git a/src/compiler/ir2tran.lisp b/src/compiler/ir2tran.lisp index 7c4e321..cf611d4 100644 --- a/src/compiler/ir2tran.lisp +++ b/src/compiler/ir2tran.lisp @@ -1282,15 +1282,14 @@ (vop reset-stack-pointer node block (first (ir2-lvar-locs 2lvar))))) -(defoptimizer (%nip-values ir2-convert) ((last-nipped last-preserved &rest moved) +(defoptimizer (%nip-values ir2-convert) ((last-nipped last-preserved + &rest moved) node block) - #!-x86 - (bug "%NIP-VALUES is not implemented on this platform.") - #!+x86 - (let ((2after (lvar-info (lvar-value last-nipped))) - ; pointer immediately after the nipped block + (let (;; pointer immediately after the nipped block + (2after (lvar-info (lvar-value last-nipped))) + ;; pointer to the first nipped word (2first (lvar-info (lvar-value last-preserved))) - ; pointer to the first nipped word + (moved-tns (loop for lvar-ref in moved for lvar = (lvar-value lvar-ref) for 2lvar = (lvar-info lvar)