Index: src/hydrogen-redundant-phi.cc |
diff --git a/src/hydrogen-redundant-phi.cc b/src/hydrogen-redundant-phi.cc |
deleted file mode 100644 |
index 1b3c94a3db0c8670f755e619056d738a57d521b9..0000000000000000000000000000000000000000 |
--- a/src/hydrogen-redundant-phi.cc |
+++ /dev/null |
@@ -1,66 +0,0 @@ |
-// Copyright 2013 the V8 project authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "src/hydrogen-redundant-phi.h" |
- |
-namespace v8 { |
-namespace internal { |
- |
-void HRedundantPhiEliminationPhase::Run() { |
- // Gather all phis from all blocks first. |
- const ZoneList<HBasicBlock*>* blocks(graph()->blocks()); |
- ZoneList<HPhi*> all_phis(blocks->length(), zone()); |
- for (int i = 0; i < blocks->length(); ++i) { |
- HBasicBlock* block = blocks->at(i); |
- for (int j = 0; j < block->phis()->length(); j++) { |
- all_phis.Add(block->phis()->at(j), zone()); |
- } |
- } |
- |
- // Iteratively reduce all phis in the list. |
- ProcessPhis(&all_phis); |
- |
-#if DEBUG |
- // Make sure that we *really* removed all redundant phis. |
- for (int i = 0; i < blocks->length(); ++i) { |
- for (int j = 0; j < blocks->at(i)->phis()->length(); j++) { |
- DCHECK(blocks->at(i)->phis()->at(j)->GetRedundantReplacement() == NULL); |
- } |
- } |
-#endif |
-} |
- |
- |
-void HRedundantPhiEliminationPhase::ProcessBlock(HBasicBlock* block) { |
- ProcessPhis(block->phis()); |
-} |
- |
- |
-void HRedundantPhiEliminationPhase::ProcessPhis(const ZoneList<HPhi*>* phis) { |
- bool updated; |
- do { |
- // Iterately replace all redundant phis in the given list. |
- updated = false; |
- for (int i = 0; i < phis->length(); i++) { |
- HPhi* phi = phis->at(i); |
- if (phi->CheckFlag(HValue::kIsDead)) continue; // Already replaced. |
- |
- HValue* replacement = phi->GetRedundantReplacement(); |
- if (replacement != NULL) { |
- phi->SetFlag(HValue::kIsDead); |
- for (HUseIterator it(phi->uses()); !it.Done(); it.Advance()) { |
- HValue* value = it.value(); |
- value->SetOperandAt(it.index(), replacement); |
- // Iterate again if used in another non-dead phi. |
- updated |= value->IsPhi() && !value->CheckFlag(HValue::kIsDead); |
- } |
- phi->block()->RemovePhi(phi); |
- } |
- } |
- } while (updated); |
-} |
- |
- |
-} // namespace internal |
-} // namespace v8 |