| Index: src/hydrogen-canonicalize.cc
|
| diff --git a/src/hydrogen-canonicalize.cc b/src/hydrogen-canonicalize.cc
|
| deleted file mode 100644
|
| index 25911eb353ae7e1326546e1682af412ce1e9026a..0000000000000000000000000000000000000000
|
| --- a/src/hydrogen-canonicalize.cc
|
| +++ /dev/null
|
| @@ -1,56 +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-canonicalize.h"
|
| -#include "src/hydrogen-redundant-phi.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -void HCanonicalizePhase::Run() {
|
| - const ZoneList<HBasicBlock*>* blocks(graph()->blocks());
|
| - // Before removing no-op instructions, save their semantic value.
|
| - // We must be careful not to set the flag unnecessarily, because GVN
|
| - // cannot identify two instructions when their flag value differs.
|
| - for (int i = 0; i < blocks->length(); ++i) {
|
| - for (HInstructionIterator it(blocks->at(i)); !it.Done(); it.Advance()) {
|
| - HInstruction* instr = it.Current();
|
| - if (instr->IsArithmeticBinaryOperation()) {
|
| - if (instr->representation().IsInteger32()) {
|
| - if (instr->HasAtLeastOneUseWithFlagAndNoneWithout(
|
| - HInstruction::kTruncatingToInt32)) {
|
| - instr->SetFlag(HInstruction::kAllUsesTruncatingToInt32);
|
| - }
|
| - } else if (instr->representation().IsSmi()) {
|
| - if (instr->HasAtLeastOneUseWithFlagAndNoneWithout(
|
| - HInstruction::kTruncatingToSmi)) {
|
| - instr->SetFlag(HInstruction::kAllUsesTruncatingToSmi);
|
| - } else if (instr->HasAtLeastOneUseWithFlagAndNoneWithout(
|
| - HInstruction::kTruncatingToInt32)) {
|
| - // Avoid redundant minus zero check
|
| - instr->SetFlag(HInstruction::kAllUsesTruncatingToInt32);
|
| - }
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Perform actual Canonicalization pass.
|
| - HRedundantPhiEliminationPhase redundant_phi_eliminator(graph());
|
| - for (int i = 0; i < blocks->length(); ++i) {
|
| - // Eliminate redundant phis in the block first; changes to their inputs
|
| - // might have made them redundant, and eliminating them creates more
|
| - // opportunities for constant folding and strength reduction.
|
| - redundant_phi_eliminator.ProcessBlock(blocks->at(i));
|
| - // Now canonicalize each instruction.
|
| - for (HInstructionIterator it(blocks->at(i)); !it.Done(); it.Advance()) {
|
| - HInstruction* instr = it.Current();
|
| - HValue* value = instr->Canonicalize();
|
| - if (value != instr) instr->DeleteAndReplaceWith(value);
|
| - }
|
| - }
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace v8
|
|
|