| Index: src/compiler/all-nodes.cc
|
| diff --git a/src/compiler/all-nodes.cc b/src/compiler/all-nodes.cc
|
| index 8040897fd33be5507ad84bc261304456806aa6dc..eada0cff8c365183c2d72d9b86084902481d9ff6 100644
|
| --- a/src/compiler/all-nodes.cc
|
| +++ b/src/compiler/all-nodes.cc
|
| @@ -14,13 +14,26 @@ AllNodes::AllNodes(Zone* local_zone, const Graph* graph, bool only_inputs)
|
| : reachable(local_zone),
|
| is_reachable_(graph->NodeCount(), false, local_zone),
|
| only_inputs_(only_inputs) {
|
| - Node* end = graph->end();
|
| + Mark(local_zone, graph->end(), graph);
|
| +}
|
| +
|
| +AllNodes::AllNodes(Zone* local_zone, Node* end, const Graph* graph,
|
| + bool only_inputs)
|
| + : reachable(local_zone),
|
| + is_reachable_(graph->NodeCount(), false, local_zone),
|
| + only_inputs_(only_inputs) {
|
| + Mark(local_zone, end, graph);
|
| +}
|
| +
|
| +void AllNodes::Mark(Zone* local_zone, Node* end, const Graph* graph) {
|
| + DCHECK_LT(end->id(), graph->NodeCount());
|
| is_reachable_[end->id()] = true;
|
| reachable.push_back(end);
|
| - // Find all nodes reachable from end.
|
| + // Find all nodes reachable from {end}.
|
| for (size_t i = 0; i < reachable.size(); i++) {
|
| - for (Node* input : reachable[i]->inputs()) {
|
| - if (input == nullptr || input->id() >= graph->NodeCount()) {
|
| + for (Node* const input : reachable[i]->inputs()) {
|
| + if (input == nullptr) {
|
| + // TODO(titzer): print a warning.
|
| continue;
|
| }
|
| if (!is_reachable_[input->id()]) {
|
| @@ -28,7 +41,7 @@ AllNodes::AllNodes(Zone* local_zone, const Graph* graph, bool only_inputs)
|
| reachable.push_back(input);
|
| }
|
| }
|
| - if (!only_inputs) {
|
| + if (!only_inputs_) {
|
| for (Node* use : reachable[i]->uses()) {
|
| if (use == nullptr || use->id() >= graph->NodeCount()) {
|
| continue;
|
|
|