This commit is contained in:
Thomas Nagy 2017-03-02 20:43:35 +01:00
parent 121e2c29d1
commit 14197b713f
No known key found for this signature in database
GPG Key ID: 49B4C67C05277AAA
2 changed files with 12 additions and 14 deletions

View File

@ -241,7 +241,7 @@ class Parallel(object):
# we assume that frozen tasks will be consumed as the build goes # we assume that frozen tasks will be consumed as the build goes
def try_unfreeze(x): def try_unfreeze(x):
# ancestors are likely to be frozen # DAG ancestors are likely to be frozen
if x in self.frozen: if x in self.frozen:
# TODO remove dependencies to free some memory? # TODO remove dependencies to free some memory?
# x.run_after.remove(tsk) # x.run_after.remove(tsk)
@ -255,14 +255,14 @@ class Parallel(object):
if tsk in self.revdeps: if tsk in self.revdeps:
for x in self.revdeps[tsk]: for x in self.revdeps[tsk]:
if isinstance(x, Task.TaskGroup): if isinstance(x, Task.TaskGroup):
x.a.remove(tsk) x.prev.remove(tsk)
if not x.a: if not x.prev:
for k in x.b: for k in x.next:
# TODO necessary optimization? # TODO necessary optimization?
k.run_after.remove(x) k.run_after.remove(x)
try_unfreeze(k) try_unfreeze(k)
# TODO necessary optimization? # TODO necessary optimization?
x.b = [] x.next = []
else: else:
try_unfreeze(x) try_unfreeze(x)
del self.revdeps[tsk] del self.revdeps[tsk]
@ -447,7 +447,7 @@ class Parallel(object):
pass pass
else: else:
k.done = True k.done = True
for j in k.a: for j in k.prev:
reverse[j].add(k) reverse[j].add(k)
else: else:
reverse[k].add(x) reverse[k].add(x)
@ -455,7 +455,7 @@ class Parallel(object):
# the priority number is not the tree size # the priority number is not the tree size
def visit(n): def visit(n):
if isinstance(n, Task.TaskGroup): if isinstance(n, Task.TaskGroup):
return sum(visit(k) for k in n.b) return sum(visit(k) for k in n.next)
if n.visited == 0: if n.visited == 0:
n.visited = 1 n.visited = 1
@ -499,7 +499,7 @@ class Parallel(object):
def visit(n, acc): def visit(n, acc):
if isinstance(n, Task.TaskGroup): if isinstance(n, Task.TaskGroup):
for k in n.b: for k in n.next:
visit(k) visit(k)
if tmp[n] == 0: if tmp[n] == 0:
tmp[n] = 1 tmp[n] = 1

View File

@ -887,15 +887,13 @@ class TaskGroup(object):
This is an optimization This is an optimization
""" """
def __init__(self, a, b): def __init__(self, prev, next):
self.a = a self.prev = prev
self.b = b self.next = next
self.done = False self.done = False
def get_hasrun(self): def get_hasrun(self):
if not self.a: for k in self.prev:
return SUCCESS
for k in self.a:
if not k.hasrun: if not k.hasrun:
return NOT_RUN return NOT_RUN
return SUCCESS return SUCCESS