Chromium Code Reviews| Index: src/compiler/bytecode-graph-builder.cc |
| diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
| index b3178262d44f2ab3a9cbc8e9f8dd48202443aba6..dc41e55dd6b41b4950c110b092ebba9736e50e75 100644 |
| --- a/src/compiler/bytecode-graph-builder.cc |
| +++ b/src/compiler/bytecode-graph-builder.cc |
| @@ -1896,11 +1896,12 @@ void BytecodeGraphBuilder::VisitIllegal() { |
| void BytecodeGraphBuilder::VisitNop() {} |
| void BytecodeGraphBuilder::SwitchToMergeEnvironment(int current_offset) { |
| - if (merge_environments_[current_offset] != nullptr) { |
| + auto it = merge_environments_.find(current_offset); |
|
Michael Starzinger
2016/12/01 14:47:48
question: Any reason to use an iterator here and a
Leszek Swirski
2016/12/01 14:52:36
Indeed there is: the find+iterator does not create
Michael Starzinger
2016/12/01 15:00:51
Yes, I would prefer that. Thanks!
Michael Starzinger
2016/12/01 17:00:43
As discussed offline: Either is fine with me. Take
|
| + if (it != merge_environments_.end()) { |
| if (environment() != nullptr) { |
| - merge_environments_[current_offset]->Merge(environment()); |
| + it->second->Merge(environment()); |
| } |
| - set_environment(merge_environments_[current_offset]); |
| + set_environment(it->second); |
| } |
| } |
| @@ -1914,15 +1915,16 @@ void BytecodeGraphBuilder::BuildLoopHeaderEnvironment(int current_offset) { |
| void BytecodeGraphBuilder::MergeIntoSuccessorEnvironment(int target_offset) { |
| BuildLoopExitsForBranch(target_offset); |
| - if (merge_environments_[target_offset] == nullptr) { |
| + Environment*& merge_environment = merge_environments_[target_offset]; |
| + if (merge_environment == nullptr) { |
| // Append merge nodes to the environment. We may merge here with another |
| // environment. So add a place holder for merge nodes. We may add redundant |
| // but will be eliminated in a later pass. |
| // TODO(mstarzinger): Be smarter about this! |
| NewMerge(); |
| - merge_environments_[target_offset] = environment(); |
| + merge_environment = environment(); |
| } else { |
| - merge_environments_[target_offset]->Merge(environment()); |
| + merge_environment->Merge(environment()); |
| } |
| set_environment(nullptr); |
| } |