| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "graph-tester.h" | 7 #include "graph-tester.h" |
| 8 #include "src/compiler/generic-node-inl.h" | 8 #include "src/compiler/generic-node-inl.h" |
| 9 #include "src/compiler/graph-reducer.h" | 9 #include "src/compiler/graph-reducer.h" |
| 10 | 10 |
| 11 using namespace v8::internal; | 11 using namespace v8::internal; |
| 12 using namespace v8::internal::compiler; | 12 using namespace v8::internal::compiler; |
| 13 | 13 |
| 14 const uint8_t OPCODE_A0 = 10; | 14 const uint8_t OPCODE_A0 = 10; |
| 15 const uint8_t OPCODE_A1 = 11; | 15 const uint8_t OPCODE_A1 = 11; |
| 16 const uint8_t OPCODE_A2 = 12; | 16 const uint8_t OPCODE_A2 = 12; |
| 17 const uint8_t OPCODE_B0 = 20; | 17 const uint8_t OPCODE_B0 = 20; |
| 18 const uint8_t OPCODE_B1 = 21; | 18 const uint8_t OPCODE_B1 = 21; |
| 19 const uint8_t OPCODE_B2 = 22; | 19 const uint8_t OPCODE_B2 = 22; |
| 20 const uint8_t OPCODE_C0 = 30; | 20 const uint8_t OPCODE_C0 = 30; |
| 21 const uint8_t OPCODE_C1 = 31; | 21 const uint8_t OPCODE_C1 = 31; |
| 22 const uint8_t OPCODE_C2 = 32; | 22 const uint8_t OPCODE_C2 = 32; |
| 23 | 23 |
| 24 static SimpleOperator OPA0(OPCODE_A0, Operator::kNoWrite, 0, 0, "opa0"); | 24 static Operator OPA0(OPCODE_A0, Operator::kNoWrite, "opa0", 0, 0, 0, 0, 0, 0); |
| 25 static SimpleOperator OPA1(OPCODE_A1, Operator::kNoWrite, 1, 0, "opa1"); | 25 static Operator OPA1(OPCODE_A1, Operator::kNoWrite, "opa1", 1, 0, 0, 0, 0, 0); |
| 26 static SimpleOperator OPA2(OPCODE_A2, Operator::kNoWrite, 2, 0, "opa2"); | 26 static Operator OPA2(OPCODE_A2, Operator::kNoWrite, "opa2", 2, 0, 0, 0, 0, 0); |
| 27 static SimpleOperator OPB0(OPCODE_B0, Operator::kNoWrite, 0, 0, "opa0"); | 27 static Operator OPB0(OPCODE_B0, Operator::kNoWrite, "opa0", 0, 0, 0, 0, 0, 0); |
| 28 static SimpleOperator OPB1(OPCODE_B1, Operator::kNoWrite, 1, 0, "opa1"); | 28 static Operator OPB1(OPCODE_B1, Operator::kNoWrite, "opa1", 1, 0, 0, 0, 0, 0); |
| 29 static SimpleOperator OPB2(OPCODE_B2, Operator::kNoWrite, 2, 0, "opa2"); | 29 static Operator OPB2(OPCODE_B2, Operator::kNoWrite, "opa2", 2, 0, 0, 0, 0, 0); |
| 30 static SimpleOperator OPC0(OPCODE_C0, Operator::kNoWrite, 0, 0, "opc0"); | 30 static Operator OPC0(OPCODE_C0, Operator::kNoWrite, "opc0", 0, 0, 0, 0, 0, 0); |
| 31 static SimpleOperator OPC1(OPCODE_C1, Operator::kNoWrite, 1, 0, "opc1"); | 31 static Operator OPC1(OPCODE_C1, Operator::kNoWrite, "opc1", 1, 0, 0, 0, 0, 0); |
| 32 static SimpleOperator OPC2(OPCODE_C2, Operator::kNoWrite, 2, 0, "opc2"); | 32 static Operator OPC2(OPCODE_C2, Operator::kNoWrite, "opc2", 2, 0, 0, 0, 0, 0); |
| 33 | 33 |
| 34 | 34 |
| 35 // Replaces all "A" operators with "B" operators without creating new nodes. | 35 // Replaces all "A" operators with "B" operators without creating new nodes. |
| 36 class InPlaceABReducer : public Reducer { | 36 class InPlaceABReducer : public Reducer { |
| 37 public: | 37 public: |
| 38 virtual Reduction Reduce(Node* node) { | 38 virtual Reduction Reduce(Node* node) { |
| 39 switch (node->op()->opcode()) { | 39 switch (node->op()->opcode()) { |
| 40 case OPCODE_A0: | 40 case OPCODE_A0: |
| 41 CHECK_EQ(0, node->InputCount()); | 41 CHECK_EQ(0, node->InputCount()); |
| 42 node->set_op(&OPB0); | 42 node->set_op(&OPB0); |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 for (int i = 0; i < 3; i++) { | 614 for (int i = 0; i < 3; i++) { |
| 615 int before = graph.NodeCount(); | 615 int before = graph.NodeCount(); |
| 616 reducer.ReduceGraph(); | 616 reducer.ReduceGraph(); |
| 617 CHECK_EQ(before, graph.NodeCount()); | 617 CHECK_EQ(before, graph.NodeCount()); |
| 618 CHECK_EQ(&OPC0, n1->op()); | 618 CHECK_EQ(&OPC0, n1->op()); |
| 619 CHECK_EQ(&OPC1, end->op()); | 619 CHECK_EQ(&OPC1, end->op()); |
| 620 CHECK_EQ(n1, end->InputAt(0)); | 620 CHECK_EQ(n1, end->InputAt(0)); |
| 621 } | 621 } |
| 622 } | 622 } |
| 623 } | 623 } |
| OLD | NEW |