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 3 // found in the LICENSE file. 4 5 #ifndef V8_CRANKSHAFT_HYDROGEN_REDUNDANT_PHI_H_ 6 #define V8_CRANKSHAFT_HYDROGEN_REDUNDANT_PHI_H_ 7 8 #include "src/crankshaft/hydrogen.h" 9 10 namespace v8 { 11 namespace internal { 12 13 14 // Replace all phis consisting of a single non-loop operand plus any number of 15 // loop operands by that single non-loop operand. 16 class HRedundantPhiEliminationPhase : public HPhase { 17 public: HRedundantPhiEliminationPhase(HGraph * graph)18 explicit HRedundantPhiEliminationPhase(HGraph* graph) 19 : HPhase("H_Redundant phi elimination", graph) { } 20 21 void Run(); 22 void ProcessBlock(HBasicBlock* block); 23 24 private: 25 void ProcessPhis(const ZoneList<HPhi*>* phis); 26 27 DISALLOW_COPY_AND_ASSIGN(HRedundantPhiEliminationPhase); 28 }; 29 30 31 } // namespace internal 32 } // namespace v8 33 34 #endif // V8_CRANKSHAFT_HYDROGEN_REDUNDANT_PHI_H_ 35