From 083a9e2e7af813571444e33fad5f0f373bce7e3f Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 7 Aug 2015 11:24:57 -0400 Subject: Factor out output edge ready check from Plan::NodeFinished Move the logic to a new Plan::EdgeMaybeReady method so it can be re-used elsewhere. --- src/build.cc | 25 ++++++++++++++++--------- src/build.h | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/build.cc b/src/build.cc index 7b53a5d..a07d970 100644 --- a/src/build.cc +++ b/src/build.cc @@ -418,15 +418,22 @@ bool Plan::NodeFinished(Node* node, string* err) { continue; // See if the edge is now ready. - if ((*oe)->AllInputsReady()) { - if (want_e->second != kWantNothing) { - ScheduleWork(want_e); - } else { - // We do not need to build this edge, but we might need to build one of - // its dependents. - if (!EdgeFinished(*oe, kEdgeSucceeded, err)) - return false; - } + if (!EdgeMaybeReady(want_e, err)) + return false; + } + return true; +} + +bool Plan::EdgeMaybeReady(map::iterator want_e, string* err) { + Edge* edge = want_e->first; + if (edge->AllInputsReady()) { + if (want_e->second != kWantNothing) { + ScheduleWork(want_e); + } else { + // We do not need to build this edge, but we might need to build one of + // its dependents. + if (!EdgeFinished(edge, kEdgeSucceeded, err)) + return false; } } return true; diff --git a/src/build.h b/src/build.h index 1473f11..05f8110 100644 --- a/src/build.h +++ b/src/build.h @@ -97,6 +97,7 @@ private: }; void EdgeWanted(Edge* edge); + bool EdgeMaybeReady(map::iterator want_e, string* err); /// Submits a ready edge as a candidate for execution. /// The edge may be delayed from running, for example if it's a member of a -- cgit v0.12