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 |