deps: update v8 to 4.3.61.21
[platform/upstream/nodejs.git] / deps / v8 / src / compiler / common-operator-reducer.h
1 // Copyright 2014 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_COMMON_OPERATOR_REDUCER_H_
6 #define V8_COMPILER_COMMON_OPERATOR_REDUCER_H_
7
8 #include "src/compiler/graph-reducer.h"
9
10 namespace v8 {
11 namespace internal {
12 namespace compiler {
13
14 // Forward declarations.
15 class CommonOperatorBuilder;
16 class Graph;
17 class JSGraph;
18 class MachineOperatorBuilder;
19
20
21 // Performs strength reduction on nodes that have common operators.
22 class CommonOperatorReducer FINAL : public Reducer {
23  public:
24   explicit CommonOperatorReducer(JSGraph* jsgraph) : jsgraph_(jsgraph) {}
25   ~CommonOperatorReducer() FINAL {}
26
27   Reduction Reduce(Node* node) FINAL;
28
29  private:
30   Reduction ReduceEffectPhi(Node* node);
31   Reduction ReducePhi(Node* node);
32   Reduction ReduceSelect(Node* node);
33
34   CommonOperatorBuilder* common() const;
35   Graph* graph() const;
36   JSGraph* jsgraph() const { return jsgraph_; }
37   MachineOperatorBuilder* machine() const;
38
39   JSGraph* const jsgraph_;
40 };
41
42 }  // namespace compiler
43 }  // namespace internal
44 }  // namespace v8
45
46 #endif  // V8_COMPILER_COMMON_OPERATOR_REDUCER_H_