X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fpack.lisp;h=16ea3abe57348da8c4cafbeecbbe6335f5537317;hb=d306e2d23b38487488eb93881dad836e439e0c77;hp=42e6c5e4c63bff6f6c18b94487fd871be917ad7e;hpb=0f3a5f2e8886d18d0b4f6485c38a42be629422ae;p=sbcl.git diff --git a/src/compiler/pack.lisp b/src/compiler/pack.lisp index 42e6c5e..16ea3ab 100644 --- a/src/compiler/pack.lisp +++ b/src/compiler/pack.lisp @@ -1546,9 +1546,10 @@ (defun tn-lexical-depth (tn) (let ((path t)) ; dummy initial value (labels ((path (lambda) - (nreverse (loop while lambda - collect lambda - do (setf lambda (lambda-parent lambda))))) + (do ((acc '()) + (lambda lambda (lambda-parent lambda))) + ((null lambda) acc) + (push lambda acc))) (register-scope (lambda) (let ((new-path (path lambda))) (setf path (if (eql path t) @@ -1557,11 +1558,10 @@ 0 (mismatch path new-path)))))) (walk-tn-refs (ref) (do ((ref ref (tn-ref-next ref))) - ((null ref)) - (binding* ((node (vop-node (tn-ref-vop ref)) - :exit-if-null)) - (register-scope (lexenv-lambda - (node-lexenv node))))))) + ((or (null ref) + (null path))) + (awhen (vop-node (tn-ref-vop ref)) + (register-scope (lexenv-lambda (node-lexenv it))))))) (walk-tn-refs (tn-reads tn)) (walk-tn-refs (tn-writes tn)) (if (eql path t)