X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fdfo.lisp;h=a4fca7ffab403cd70f74d6851f166b828ebc1194;hb=69d60b456b07a0256f08df0d02484f361ce5737c;hp=195226d6dc63ff485f960ef111120787c7e94a41;hpb=0b525ddd5632801f52de54a633df6a2fe2f9620c;p=sbcl.git diff --git a/src/compiler/dfo.lisp b/src/compiler/dfo.lisp index 195226d..a4fca7f 100644 --- a/src/compiler/dfo.lisp +++ b/src/compiler/dfo.lisp @@ -91,6 +91,18 @@ (setf (block-flag block) t) (dolist (succ (block-succ block)) (find-dfo-aux succ head component)) + (when (component-nlx-info-generated-p component) + ;; FIXME: We also need (and do) this walk before physenv + ;; analysis, but at that time we are probably not very + ;; interested in the actual DF order. + ;; + ;; TODO: It is probable that one of successors have the same (or + ;; similar) set of NLXes; try to shorten the walk (but think + ;; about a loop, the only exit from which is non-local). + (map-block-nlxes (lambda (nlx-info) + (let ((nle (nlx-info-target nlx-info))) + (find-dfo-aux nle head component))) + block)) (remove-from-dfo block) (add-to-dfo block head)) (values)) @@ -345,16 +357,6 @@ (values (real) (top) (real-top)))) -;;; COMPONENTs want strings for names, LEAF-DEBUG-NAMEs mightn't be -;;; strings... -(defun component-name-from-functional-debug-name (functional) - (declare (type functional functional)) - (let ((leaf-debug-name (leaf-debug-name functional))) - (the simple-string - (if (stringp leaf-debug-name) - leaf-debug-name - (debug-namify "function ~S" leaf-debug-name))))) - ;;; Given a list of top level lambdas, return ;;; (VALUES NONTOP-COMPONENTS TOP-COMPONENTS HAIRY-TOP-COMPONENTS). ;;; Each of the three values returned is a list of COMPONENTs: @@ -391,8 +393,7 @@ ;; component, since it might end up with multiple ;; lambdas in it, not just this one, but it does ;; seem a better name than just "". - (component-name-from-functional-debug-name - component-lambda))) + (leaf-debug-name component-lambda))) (let ((res (dfo-scavenge-dependency-graph component-lambda new-component))) (when (eq res new-component)