diff options
Diffstat (limited to 'deps/v8/src/crankshaft/hydrogen-gvn.cc')
-rw-r--r-- | deps/v8/src/crankshaft/hydrogen-gvn.cc | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/deps/v8/src/crankshaft/hydrogen-gvn.cc b/deps/v8/src/crankshaft/hydrogen-gvn.cc index e586f4778f..70320052b0 100644 --- a/deps/v8/src/crankshaft/hydrogen-gvn.cc +++ b/deps/v8/src/crankshaft/hydrogen-gvn.cc @@ -5,8 +5,6 @@ #include "src/crankshaft/hydrogen-gvn.h" #include "src/crankshaft/hydrogen.h" -#include "src/list.h" -#include "src/list-inl.h" #include "src/objects-inl.h" #include "src/v8.h" @@ -653,23 +651,19 @@ SideEffects HGlobalValueNumberingPhase::CollectSideEffectsOnPathsToDominatedBlock( HBasicBlock* dominator, HBasicBlock* dominated) { SideEffects side_effects; - List<HBasicBlock*> blocks; - for (;;) { - for (int i = 0; i < dominated->predecessors()->length(); ++i) { - HBasicBlock* block = dominated->predecessors()->at(i); - if (dominator->block_id() < block->block_id() && - block->block_id() < dominated->block_id() && - !visited_on_paths_.Contains(block->block_id())) { - visited_on_paths_.Add(block->block_id()); - side_effects.Add(block_side_effects_[block->block_id()]); - if (block->IsLoopHeader()) { - side_effects.Add(loop_side_effects_[block->block_id()]); - } - blocks.Add(block); + for (int i = 0; i < dominated->predecessors()->length(); ++i) { + HBasicBlock* block = dominated->predecessors()->at(i); + if (dominator->block_id() < block->block_id() && + block->block_id() < dominated->block_id() && + !visited_on_paths_.Contains(block->block_id())) { + visited_on_paths_.Add(block->block_id()); + side_effects.Add(block_side_effects_[block->block_id()]); + if (block->IsLoopHeader()) { + side_effects.Add(loop_side_effects_[block->block_id()]); } + side_effects.Add(CollectSideEffectsOnPathsToDominatedBlock( + dominator, block)); } - if (blocks.is_empty()) break; - dominated = blocks.RemoveLast(); } return side_effects; } |