| Index: src/compiler/machine-operator-reducer.cc
|
| diff --git a/src/compiler/machine-operator-reducer.cc b/src/compiler/machine-operator-reducer.cc
|
| index 07bb02f9da1973989f429eae471e0f9b71f2f779..4a7bff9ac6797ba5af63d06fc765eca2cf723480 100644
|
| --- a/src/compiler/machine-operator-reducer.cc
|
| +++ b/src/compiler/machine-operator-reducer.cc
|
| @@ -5,50 +5,34 @@
|
| #include "src/compiler/machine-operator-reducer.h"
|
|
|
| #include "src/base/bits.h"
|
| -#include "src/compiler/common-node-cache.h"
|
| #include "src/compiler/generic-node-inl.h"
|
| #include "src/compiler/graph.h"
|
| +#include "src/compiler/js-graph.h"
|
| #include "src/compiler/node-matchers.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| namespace compiler {
|
|
|
| -MachineOperatorReducer::MachineOperatorReducer(Graph* graph)
|
| - : graph_(graph),
|
| - cache_(new (graph->zone()) CommonNodeCache(graph->zone())),
|
| - common_(graph->zone()),
|
| - machine_(graph->zone()) {}
|
| +MachineOperatorReducer::MachineOperatorReducer(JSGraph* jsgraph)
|
| + : jsgraph_(jsgraph), machine_(jsgraph->zone()) {}
|
|
|
|
|
| -MachineOperatorReducer::MachineOperatorReducer(Graph* graph,
|
| - CommonNodeCache* cache)
|
| - : graph_(graph),
|
| - cache_(cache),
|
| - common_(graph->zone()),
|
| - machine_(graph->zone()) {}
|
| +MachineOperatorReducer::~MachineOperatorReducer() {}
|
|
|
|
|
| Node* MachineOperatorReducer::Float64Constant(volatile double value) {
|
| - Node** loc = cache_->FindFloat64Constant(value);
|
| - if (*loc == NULL) {
|
| - *loc = graph_->NewNode(common_.Float64Constant(value));
|
| - }
|
| - return *loc;
|
| + return jsgraph()->Float64Constant(value);
|
| }
|
|
|
|
|
| Node* MachineOperatorReducer::Int32Constant(int32_t value) {
|
| - Node** loc = cache_->FindInt32Constant(value);
|
| - if (*loc == NULL) {
|
| - *loc = graph_->NewNode(common_.Int32Constant(value));
|
| - }
|
| - return *loc;
|
| + return jsgraph()->Int32Constant(value);
|
| }
|
|
|
|
|
| Node* MachineOperatorReducer::Int64Constant(int64_t value) {
|
| - return graph_->NewNode(common_.Int64Constant(value));
|
| + return graph()->NewNode(common()->Int64Constant(value));
|
| }
|
|
|
|
|
| @@ -82,7 +66,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| Int32BinopMatcher mrightright(mright.right().node());
|
| if (mrightright.left().Is(32) &&
|
| mrightright.right().node() == mleft.right().node()) {
|
| - graph_->ChangeOperator(node, machine_.Word32Ror());
|
| + graph()->ChangeOperator(node, machine()->Word32Ror());
|
| node->ReplaceInput(0, mleft.left().node());
|
| node->ReplaceInput(1, mleft.right().node());
|
| return Changed(node);
|
| @@ -91,7 +75,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| // (x << K) | (x >> (32 - K)) => x ror K
|
| if (mleft.right().IsInRange(0, 31) &&
|
| mright.right().Is(32 - mleft.right().Value())) {
|
| - graph_->ChangeOperator(node, machine_.Word32Ror());
|
| + graph()->ChangeOperator(node, machine()->Word32Ror());
|
| node->ReplaceInput(0, mleft.left().node());
|
| node->ReplaceInput(1, mleft.right().node());
|
| return Changed(node);
|
| @@ -107,7 +91,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| Int32BinopMatcher mleftright(mleft.right().node());
|
| if (mleftright.left().Is(32) &&
|
| mleftright.right().node() == mright.right().node()) {
|
| - graph_->ChangeOperator(node, machine_.Word32Ror());
|
| + graph()->ChangeOperator(node, machine()->Word32Ror());
|
| node->ReplaceInput(0, mright.left().node());
|
| node->ReplaceInput(1, mright.right().node());
|
| return Changed(node);
|
| @@ -116,7 +100,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| // (x >> (32 - K)) | (x << K) => x ror K
|
| if (mright.right().IsInRange(0, 31) &&
|
| mleft.right().Is(32 - mright.right().Value())) {
|
| - graph_->ChangeOperator(node, machine_.Word32Ror());
|
| + graph()->ChangeOperator(node, machine()->Word32Ror());
|
| node->ReplaceInput(0, mright.left().node());
|
| node->ReplaceInput(1, mright.right().node());
|
| return Changed(node);
|
| @@ -209,13 +193,13 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| return ReplaceInt32(m.left().Value() * m.right().Value());
|
| }
|
| if (m.right().Is(-1)) { // x * -1 => 0 - x
|
| - graph_->ChangeOperator(node, machine_.Int32Sub());
|
| + graph()->ChangeOperator(node, machine()->Int32Sub());
|
| node->ReplaceInput(0, Int32Constant(0));
|
| node->ReplaceInput(1, m.left().node());
|
| return Changed(node);
|
| }
|
| if (m.right().IsPowerOf2()) { // x * 2^n => x << n
|
| - graph_->ChangeOperator(node, machine_.Word32Shl());
|
| + graph()->ChangeOperator(node, machine()->Word32Shl());
|
| node->ReplaceInput(1, Int32Constant(WhichPowerOf2(m.right().Value())));
|
| return Changed(node);
|
| }
|
| @@ -233,7 +217,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| return ReplaceInt32(m.left().Value() / m.right().Value());
|
| }
|
| if (m.right().Is(-1)) { // x / -1 => 0 - x
|
| - graph_->ChangeOperator(node, machine_.Int32Sub());
|
| + graph()->ChangeOperator(node, machine()->Int32Sub());
|
| node->ReplaceInput(0, Int32Constant(0));
|
| node->ReplaceInput(1, m.left().node());
|
| return Changed(node);
|
| @@ -250,7 +234,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| return ReplaceInt32(m.left().Value() / m.right().Value());
|
| }
|
| if (m.right().IsPowerOf2()) { // x / 2^n => x >> n
|
| - graph_->ChangeOperator(node, machine_.Word32Shr());
|
| + graph()->ChangeOperator(node, machine()->Word32Shr());
|
| node->ReplaceInput(1, Int32Constant(WhichPowerOf2(m.right().Value())));
|
| return Changed(node);
|
| }
|
| @@ -279,7 +263,7 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| return ReplaceInt32(m.left().Value() % m.right().Value());
|
| }
|
| if (m.right().IsPowerOf2()) { // x % 2^n => x & 2^n-1
|
| - graph_->ChangeOperator(node, machine_.Word32And());
|
| + graph()->ChangeOperator(node, machine()->Word32And());
|
| node->ReplaceInput(1, Int32Constant(m.right().Value() - 1));
|
| return Changed(node);
|
| }
|
| @@ -447,6 +431,15 @@ Reduction MachineOperatorReducer::Reduce(Node* node) {
|
| }
|
| return NoChange();
|
| }
|
| +
|
| +
|
| +CommonOperatorBuilder* MachineOperatorReducer::common() const {
|
| + return jsgraph()->common();
|
| }
|
| -}
|
| -} // namespace v8::internal::compiler
|
| +
|
| +
|
| +Graph* MachineOperatorReducer::graph() const { return jsgraph()->graph(); }
|
| +
|
| +} // namespace compiler
|
| +} // namespace internal
|
| +} // namespace v8
|
|
|