Author: Armin Rigo <[email protected]>
Branch:
Changeset: r88446:da7ce96af92c
Date: 2016-11-17 16:19 +0100
http://bitbucket.org/pypy/pypy/changeset/da7ce96af92c/
Log: un-recursivify is_acyclic()
diff --git a/rpython/tool/algo/graphlib.py b/rpython/tool/algo/graphlib.py
--- a/rpython/tool/algo/graphlib.py
+++ b/rpython/tool/algo/graphlib.py
@@ -180,14 +180,20 @@
raise CycleFound
if w in unvisited:
del unvisited[w]
- visit(w)
+ yield visit(w)
del visiting[vertex]
try:
unvisited = vertices.copy()
while unvisited:
visiting = {}
root = unvisited.popitem()[0]
- visit(root)
+ pending = [visit(root)]
+ while pending:
+ generator = pending[-1]
+ try:
+ pending.append(next(generator))
+ except StopIteration:
+ pending.pop()
except CycleFound:
return False
else:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit