| Index: src/compiler/js-inlining.cc
|
| diff --git a/src/compiler/js-inlining.cc b/src/compiler/js-inlining.cc
|
| index ec6ab90584c6260e9c8f5a697f57d2ea60a0cfbd..d143382dfd047a71ce3f868e92f308bd57f63d4c 100644
|
| --- a/src/compiler/js-inlining.cc
|
| +++ b/src/compiler/js-inlining.cc
|
| @@ -126,19 +126,17 @@ void Inlinee::UnifyReturn(JSGraph* jsgraph) {
|
| NodeVector effects(jsgraph->zone());
|
| // Iterate over all control flow predecessors,
|
| // which must be return statements.
|
| - InputIter iter = final_merge->inputs().begin();
|
| - while (iter != final_merge->inputs().end()) {
|
| - Node* input = *iter;
|
| + for (Edge edge : final_merge->input_edges()) {
|
| + Node* input = edge.to();
|
| switch (input->opcode()) {
|
| case IrOpcode::kReturn:
|
| values.push_back(NodeProperties::GetValueInput(input, 0));
|
| effects.push_back(NodeProperties::GetEffectInput(input));
|
| - iter.UpdateToAndIncrement(NodeProperties::GetControlInput(input));
|
| + edge.UpdateTo(NodeProperties::GetControlInput(input));
|
| input->RemoveAllInputs();
|
| break;
|
| default:
|
| UNREACHABLE();
|
| - ++iter;
|
| break;
|
| }
|
| }
|
| @@ -167,9 +165,8 @@ class CopyVisitor : public NullNodeVisitor {
|
|
|
| void Post(Node* original) {
|
| NodeVector inputs(temp_zone_);
|
| - for (InputIter it = original->inputs().begin();
|
| - it != original->inputs().end(); ++it) {
|
| - inputs.push_back(GetCopy(*it));
|
| + for (Node* const node : original->inputs()) {
|
| + inputs.push_back(GetCopy(node));
|
| }
|
|
|
| // Reuse the operator in the copy. This assumes that op lives in a zone
|
| @@ -242,35 +239,33 @@ void Inlinee::InlineAtCall(JSGraph* jsgraph, Node* call) {
|
| // context, effect, control.
|
| int inliner_inputs = call->op()->ValueInputCount();
|
| // Iterate over all uses of the start node.
|
| - UseIter iter = start_->uses().begin();
|
| - while (iter != start_->uses().end()) {
|
| - Node* use = *iter;
|
| + for (Edge edge : start_->use_edges()) {
|
| + Node* use = edge.from();
|
| switch (use->opcode()) {
|
| case IrOpcode::kParameter: {
|
| int index = 1 + OpParameter<int>(use->op());
|
| if (index < inliner_inputs && index < inlinee_context_index) {
|
| // There is an input from the call, and the index is a value
|
| // projection but not the context, so rewire the input.
|
| - NodeProperties::ReplaceWithValue(*iter, call->InputAt(index));
|
| + NodeProperties::ReplaceWithValue(use, call->InputAt(index));
|
| } else if (index == inlinee_context_index) {
|
| // This is the context projection, rewire it to the context from the
|
| // JSFunction object.
|
| - NodeProperties::ReplaceWithValue(*iter, context);
|
| + NodeProperties::ReplaceWithValue(use, context);
|
| } else if (index < inlinee_context_index) {
|
| // Call has fewer arguments than required, fill with undefined.
|
| - NodeProperties::ReplaceWithValue(*iter, jsgraph->UndefinedConstant());
|
| + NodeProperties::ReplaceWithValue(use, jsgraph->UndefinedConstant());
|
| } else {
|
| // We got too many arguments, discard for now.
|
| // TODO(sigurds): Fix to treat arguments array correctly.
|
| }
|
| - ++iter;
|
| break;
|
| }
|
| default:
|
| - if (NodeProperties::IsEffectEdge(iter.edge())) {
|
| - iter.UpdateToAndIncrement(context);
|
| - } else if (NodeProperties::IsControlEdge(iter.edge())) {
|
| - iter.UpdateToAndIncrement(control);
|
| + if (NodeProperties::IsEffectEdge(edge)) {
|
| + edge.UpdateTo(context);
|
| + } else if (NodeProperties::IsControlEdge(edge)) {
|
| + edge.UpdateTo(control);
|
| } else {
|
| UNREACHABLE();
|
| }
|
| @@ -455,9 +450,8 @@ class JSCallRuntimeAccessor {
|
|
|
| NodeVector inputs(Zone* zone) const {
|
| NodeVector inputs(zone);
|
| - for (InputIter it = call_->inputs().begin(); it != call_->inputs().end();
|
| - ++it) {
|
| - inputs.push_back(*it);
|
| + for (Node* const node : call_->inputs()) {
|
| + inputs.push_back(node);
|
| }
|
| return inputs;
|
| }
|
|
|