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_STORE_ELIMINATION_H_ 6 #define V8_CRANKSHAFT_HYDROGEN_STORE_ELIMINATION_H_ 7 8 #include "src/crankshaft/hydrogen.h" 9 #include "src/crankshaft/hydrogen-alias-analysis.h" 10 11 namespace v8 { 12 namespace internal { 13 14 class HStoreEliminationPhase : public HPhase { 15 public: HStoreEliminationPhase(HGraph * graph)16 explicit HStoreEliminationPhase(HGraph* graph) 17 : HPhase("H_Store elimination", graph), 18 unobserved_(10, zone()), 19 aliasing_() { } 20 21 void Run(); 22 private: 23 ZoneList<HStoreNamedField*> unobserved_; 24 HAliasAnalyzer* aliasing_; 25 26 void ProcessStore(HStoreNamedField* store); 27 void ProcessLoad(HLoadNamedField* load); 28 void ProcessInstr(HInstruction* instr, GVNFlagSet flags); 29 }; 30 31 32 } // namespace internal 33 } // namespace v8 34 35 #endif // V8_CRANKSHAFT_HYDROGEN_STORE_ELIMINATION_H_ 36