blob: 1c9ae3dbeb8c237f3cabec02d7b2204b8bd5e1ac [file] [log] [blame]
Ben Murdoch61f157c2016-09-16 13:49:30 +01001// 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
12namespace v8 {
13namespace internal {
14namespace compiler {
15
16// Forward declarations.
17class CommonOperatorBuilder;
18class JSGraph;
19
20class 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);
29 JSGraph* jsgraph() const { return jsgraph_; }
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_