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.
5 #ifndef V8_COMPILER_COMMON_OPERATOR_REDUCER_H_
6 #define V8_COMPILER_COMMON_OPERATOR_REDUCER_H_
8 #include "src/compiler/graph-reducer.h"
14 // Forward declarations.
15 class CommonOperatorBuilder;
18 class MachineOperatorBuilder;
21 // Performs strength reduction on nodes that have common operators.
22 class CommonOperatorReducer FINAL : public Reducer {
24 explicit CommonOperatorReducer(JSGraph* jsgraph) : jsgraph_(jsgraph) {}
25 ~CommonOperatorReducer() FINAL {}
27 Reduction Reduce(Node* node) FINAL;
30 Reduction ReduceEffectPhi(Node* node);
31 Reduction ReducePhi(Node* node);
32 Reduction ReduceSelect(Node* node);
34 CommonOperatorBuilder* common() const;
36 JSGraph* jsgraph() const { return jsgraph_; }
37 MachineOperatorBuilder* machine() const;
39 JSGraph* const jsgraph_;
42 } // namespace compiler
43 } // namespace internal
46 #endif // V8_COMPILER_COMMON_OPERATOR_REDUCER_H_