1 // Copyright 2016 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_COMPILER_STORE_STORE_ELIMINATION_H_ 6 #define V8_COMPILER_STORE_STORE_ELIMINATION_H_ 7 8 #include "src/compiler/common-operator.h" 9 #include "src/compiler/graph-reducer.h" 10 #include "src/compiler/js-graph.h" 11 12 namespace v8 { 13 namespace internal { 14 namespace compiler { 15 16 // Forward declarations. 17 class CommonOperatorBuilder; 18 class JSGraph; 19 20 class StoreStoreElimination final { 21 public: 22 StoreStoreElimination(JSGraph* js_graph, Zone* temp_zone); 23 ~StoreStoreElimination(); 24 void Run(); 25 26 private: 27 static bool IsEligibleNode(Node* node); 28 void ReduceEligibleNode(Node* node); jsgraph()29 JSGraph* jsgraph() const { return jsgraph_; } temp_zone()30 Zone* temp_zone() const { return temp_zone_; } 31 32 JSGraph* const jsgraph_; 33 Zone* const temp_zone_; 34 }; 35 36 } // namespace compiler 37 } // namespace internal 38 } // namespace v8 39 40 #endif // V8_COMPILER_STORE_STORE_ELIMINATION_H_ 41