| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/hydrogen-redundant-phi.h" | 5 #include "src/hydrogen-redundant-phi.h" |
| 6 | 6 |
| 7 namespace v8 { | 7 namespace v8 { |
| 8 namespace internal { | 8 namespace internal { |
| 9 | 9 |
| 10 void HRedundantPhiEliminationPhase::Run() { | 10 void HRedundantPhiEliminationPhase::Run() { |
| 11 // Gather all phis from all blocks first. | 11 // Gather all phis from all blocks first. |
| 12 const ZoneList<HBasicBlock*>* blocks(graph()->blocks()); | 12 const ZoneList<HBasicBlock*>* blocks(graph()->blocks()); |
| 13 ZoneList<HPhi*> all_phis(blocks->length(), zone()); | 13 ZoneList<HPhi*> all_phis(blocks->length(), zone()); |
| 14 for (int i = 0; i < blocks->length(); ++i) { | 14 for (int i = 0; i < blocks->length(); ++i) { |
| 15 HBasicBlock* block = blocks->at(i); | 15 HBasicBlock* block = blocks->at(i); |
| 16 for (int j = 0; j < block->phis()->length(); j++) { | 16 for (int j = 0; j < block->phis()->length(); j++) { |
| 17 all_phis.Add(block->phis()->at(j), zone()); | 17 all_phis.Add(block->phis()->at(j), zone()); |
| 18 } | 18 } |
| 19 } | 19 } |
| 20 | 20 |
| 21 // Iteratively reduce all phis in the list. | 21 // Iteratively reduce all phis in the list. |
| 22 ProcessPhis(&all_phis); | 22 ProcessPhis(&all_phis); |
| 23 | 23 |
| 24 #if DEBUG | 24 #if DEBUG |
| 25 // Make sure that we *really* removed all redundant phis. | 25 // Make sure that we *really* removed all redundant phis. |
| 26 for (int i = 0; i < blocks->length(); ++i) { | 26 for (int i = 0; i < blocks->length(); ++i) { |
| 27 for (int j = 0; j < blocks->at(i)->phis()->length(); j++) { | 27 for (int j = 0; j < blocks->at(i)->phis()->length(); j++) { |
| 28 ASSERT(blocks->at(i)->phis()->at(j)->GetRedundantReplacement() == NULL); | 28 DCHECK(blocks->at(i)->phis()->at(j)->GetRedundantReplacement() == NULL); |
| 29 } | 29 } |
| 30 } | 30 } |
| 31 #endif | 31 #endif |
| 32 } | 32 } |
| 33 | 33 |
| 34 | 34 |
| 35 void HRedundantPhiEliminationPhase::ProcessBlock(HBasicBlock* block) { | 35 void HRedundantPhiEliminationPhase::ProcessBlock(HBasicBlock* block) { |
| 36 ProcessPhis(block->phis()); | 36 ProcessPhis(block->phis()); |
| 37 } | 37 } |
| 38 | 38 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 56 updated |= value->IsPhi() && !value->CheckFlag(HValue::kIsDead); | 56 updated |= value->IsPhi() && !value->CheckFlag(HValue::kIsDead); |
| 57 } | 57 } |
| 58 phi->block()->RemovePhi(phi); | 58 phi->block()->RemovePhi(phi); |
| 59 } | 59 } |
| 60 } | 60 } |
| 61 } while (updated); | 61 } while (updated); |
| 62 } | 62 } |
| 63 | 63 |
| 64 | 64 |
| 65 } } // namespace v8::internal | 65 } } // namespace v8::internal |
| OLD | NEW |