| Index: test/unittests/compiler/graph-reducer-unittest.cc
|
| diff --git a/test/unittests/compiler/graph-reducer-unittest.cc b/test/unittests/compiler/graph-reducer-unittest.cc
|
| index ca3203e5d8a87dcedbb79a277cc674d34be5d30a..923c8ea81bddb08d18821a93d3b75eaee46fdfb4 100644
|
| --- a/test/unittests/compiler/graph-reducer-unittest.cc
|
| +++ b/test/unittests/compiler/graph-reducer-unittest.cc
|
| @@ -3,11 +3,10 @@
|
| // found in the LICENSE file.
|
|
|
| #include "src/compiler/graph.h"
|
| -#include "src/compiler/graph-reducer.h"
|
| #include "src/compiler/node.h"
|
| #include "src/compiler/operator.h"
|
| +#include "test/unittests/compiler/graph-reducer-unittest.h"
|
| #include "test/unittests/test-utils.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
|
|
| using testing::_;
|
| using testing::DefaultValue;
|
| @@ -55,9 +54,9 @@ struct MockReducer : public Reducer {
|
|
|
|
|
| // Replaces all "A" operators with "B" operators without creating new nodes.
|
| -class InPlaceABReducer : public Reducer {
|
| +class InPlaceABReducer final : public Reducer {
|
| public:
|
| - virtual Reduction Reduce(Node* node) {
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeA0:
|
| EXPECT_EQ(0, node->InputCount());
|
| @@ -78,10 +77,11 @@ class InPlaceABReducer : public Reducer {
|
|
|
|
|
| // Replaces all "A" operators with "B" operators by allocating new nodes.
|
| -class NewABReducer : public Reducer {
|
| +class NewABReducer final : public Reducer {
|
| public:
|
| explicit NewABReducer(Graph* graph) : graph_(graph) {}
|
| - virtual Reduction Reduce(Node* node) {
|
| +
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeA0:
|
| EXPECT_EQ(0, node->InputCount());
|
| @@ -96,7 +96,9 @@ class NewABReducer : public Reducer {
|
| }
|
| return NoChange();
|
| }
|
| - Graph* graph_;
|
| +
|
| + private:
|
| + Graph* const graph_;
|
| };
|
|
|
|
|
| @@ -104,7 +106,8 @@ class NewABReducer : public Reducer {
|
| class A0Wrapper final : public Reducer {
|
| public:
|
| explicit A0Wrapper(Graph* graph) : graph_(graph) {}
|
| - virtual Reduction Reduce(Node* node) override {
|
| +
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeA0:
|
| EXPECT_EQ(0, node->InputCount());
|
| @@ -112,7 +115,9 @@ class A0Wrapper final : public Reducer {
|
| }
|
| return NoChange();
|
| }
|
| - Graph* graph_;
|
| +
|
| + private:
|
| + Graph* const graph_;
|
| };
|
|
|
|
|
| @@ -120,7 +125,8 @@ class A0Wrapper final : public Reducer {
|
| class B0Wrapper final : public Reducer {
|
| public:
|
| explicit B0Wrapper(Graph* graph) : graph_(graph) {}
|
| - virtual Reduction Reduce(Node* node) override {
|
| +
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeB0:
|
| EXPECT_EQ(0, node->InputCount());
|
| @@ -128,13 +134,16 @@ class B0Wrapper final : public Reducer {
|
| }
|
| return NoChange();
|
| }
|
| - Graph* graph_;
|
| +
|
| + private:
|
| + Graph* const graph_;
|
| };
|
|
|
|
|
| // Replaces all "kOpA1" nodes with the first input.
|
| -class A1Forwarder : public Reducer {
|
| - virtual Reduction Reduce(Node* node) {
|
| +class A1Forwarder final : public Reducer {
|
| + public:
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeA1:
|
| EXPECT_EQ(1, node->InputCount());
|
| @@ -146,8 +155,9 @@ class A1Forwarder : public Reducer {
|
|
|
|
|
| // Replaces all "kOpB1" nodes with the first input.
|
| -class B1Forwarder : public Reducer {
|
| - virtual Reduction Reduce(Node* node) {
|
| +class B1Forwarder final : public Reducer {
|
| + public:
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeB1:
|
| EXPECT_EQ(1, node->InputCount());
|
| @@ -159,9 +169,9 @@ class B1Forwarder : public Reducer {
|
|
|
|
|
| // Replaces all "B" operators with "C" operators without creating new nodes.
|
| -class InPlaceBCReducer : public Reducer {
|
| +class InPlaceBCReducer final : public Reducer {
|
| public:
|
| - virtual Reduction Reduce(Node* node) {
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeB0:
|
| EXPECT_EQ(0, node->InputCount());
|
| @@ -182,8 +192,9 @@ class InPlaceBCReducer : public Reducer {
|
|
|
|
|
| // Swaps the inputs to "kOp2A" and "kOp2B" nodes based on ids.
|
| -class AB2Sorter : public Reducer {
|
| - virtual Reduction Reduce(Node* node) {
|
| +class AB2Sorter final : public Reducer {
|
| + public:
|
| + Reduction Reduce(Node* node) final {
|
| switch (node->op()->opcode()) {
|
| case kOpcodeA2:
|
| case kOpcodeB2:
|
| @@ -200,7 +211,6 @@ class AB2Sorter : public Reducer {
|
| }
|
| };
|
|
|
| -
|
| } // namespace
|
|
|
|
|
| @@ -268,6 +278,24 @@ class GraphReducerTest : public TestWithZone {
|
| };
|
|
|
|
|
| +TEST_F(GraphReducerTest, AddReducerSetsObserver) {
|
| + StrictMock<MockReducer> r;
|
| + GraphReducer gr(graph(), zone());
|
| + gr.AddReducer(&r);
|
| + EXPECT_EQ(&gr, r.observer());
|
| +}
|
| +
|
| +
|
| +TEST_F(GraphReducerTest, DestructorResetsObserver) {
|
| + StrictMock<MockReducer> r;
|
| + {
|
| + GraphReducer gr(graph(), zone());
|
| + gr.AddReducer(&r);
|
| + }
|
| + EXPECT_EQ(nullptr, r.observer());
|
| +}
|
| +
|
| +
|
| TEST_F(GraphReducerTest, NodeIsDeadAfterReplace) {
|
| StrictMock<MockReducer> r;
|
| Node* node0 = graph()->NewNode(&kOpA0);
|
| @@ -573,6 +601,8 @@ TEST_F(GraphReducerTest, Sorter1) {
|
| }
|
|
|
|
|
| +namespace {
|
| +
|
| // Generate a node graph with the given permutations.
|
| void GenDAG(Graph* graph, int* p3, int* p2, int* p1) {
|
| Node* level4 = graph->NewNode(&kOpA0);
|
| @@ -591,6 +621,8 @@ void GenDAG(Graph* graph, int* p3, int* p2, int* p1) {
|
| graph->SetEnd(end);
|
| }
|
|
|
| +} // namespace
|
| +
|
|
|
| TEST_F(GraphReducerTest, SortForwardReduce) {
|
| // Tests combined reductions on a series of DAGs.
|
| @@ -667,7 +699,6 @@ TEST_F(GraphReducerTest, Order) {
|
| }
|
| }
|
|
|
| -
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|