Optimizing: Refactor ImprovedOptimizingUnitTest.
And merge all functionality into OptimizingUnitTest.
Test: m test-art-host-gtest
Change-Id: I69a4e8c489462700ec0eb9ed93d5cdbdb6147f1a
diff --git a/compiler/optimizing/superblock_cloner_test.cc b/compiler/optimizing/superblock_cloner_test.cc
index a46334b..d8d68b7 100644
--- a/compiler/optimizing/superblock_cloner_test.cc
+++ b/compiler/optimizing/superblock_cloner_test.cc
@@ -30,27 +30,23 @@
// This class provides methods and helpers for testing various cloning and copying routines:
// individual instruction cloning and cloning of the more coarse-grain structures.
-class SuperblockClonerTest : public ImprovedOptimizingUnitTest {
- private:
- void CreateParameters() override {
- parameters_.push_back(new (GetAllocator()) HParameterValue(graph_->GetDexFile(),
- dex::TypeIndex(0),
- 0,
- DataType::Type::kInt32));
+class SuperblockClonerTest : public OptimizingUnitTest {
+ protected:
+ void InitGraphAndParameters() {
+ InitGraph();
+ AddParameter(new (GetAllocator()) HParameterValue(graph_->GetDexFile(),
+ dex::TypeIndex(0),
+ 0,
+ DataType::Type::kInt32));
}
- public:
void CreateBasicLoopControlFlow(HBasicBlock* position,
HBasicBlock* successor,
/* out */ HBasicBlock** header_p,
/* out */ HBasicBlock** body_p) {
- HBasicBlock* loop_preheader = new (GetAllocator()) HBasicBlock(graph_);
- HBasicBlock* loop_header = new (GetAllocator()) HBasicBlock(graph_);
- HBasicBlock* loop_body = new (GetAllocator()) HBasicBlock(graph_);
-
- graph_->AddBlock(loop_preheader);
- graph_->AddBlock(loop_header);
- graph_->AddBlock(loop_body);
+ HBasicBlock* loop_preheader = AddNewBlock();
+ HBasicBlock* loop_header = AddNewBlock();
+ HBasicBlock* loop_body = AddNewBlock();
position->ReplaceSuccessor(successor, loop_preheader);
@@ -121,7 +117,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -151,9 +147,9 @@
TEST_F(SuperblockClonerTest, CloneBasicBlocks) {
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- ArenaAllocator* arena = graph_->GetAllocator();
+ ArenaAllocator* arena = GetAllocator();
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -232,9 +228,9 @@
TEST_F(SuperblockClonerTest, AdjustControlFlowInfo) {
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- ArenaAllocator* arena = graph_->GetAllocator();
+ ArenaAllocator* arena = GetAllocator();
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -271,13 +267,12 @@
TEST_F(SuperblockClonerTest, IsGraphConnected) {
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- ArenaAllocator* arena = graph_->GetAllocator();
+ ArenaAllocator* arena = GetAllocator();
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
- HBasicBlock* unreachable_block = new (GetAllocator()) HBasicBlock(graph_);
- graph_->AddBlock(unreachable_block);
+ HBasicBlock* unreachable_block = AddNewBlock();
HBasicBlockSet bb_set(
arena, graph_->GetBlocks().size(), false, kArenaAllocSuperblockCloner);
@@ -297,7 +292,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -334,7 +329,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -371,7 +366,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -419,16 +414,14 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
// Transform a basic loop to have multiple back edges.
HBasicBlock* latch = header->GetSuccessors()[1];
- HBasicBlock* if_block = new (GetAllocator()) HBasicBlock(graph_);
- HBasicBlock* temp1 = new (GetAllocator()) HBasicBlock(graph_);
- graph_->AddBlock(if_block);
- graph_->AddBlock(temp1);
+ HBasicBlock* if_block = AddNewBlock();
+ HBasicBlock* temp1 = AddNewBlock();
header->ReplaceSuccessor(latch, if_block);
if_block->AddSuccessor(latch);
if_block->AddSuccessor(temp1);
@@ -474,7 +467,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
// Create the following nested structure of loops
// Headers: 1 2 3
@@ -521,7 +514,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
// Create the following nested structure of loops
// Headers: 1 2 3 4
@@ -578,7 +571,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
// Create the following nested structure of loops then peel loop3.
// Headers: 1 2 3
@@ -597,8 +590,7 @@
HBasicBlock* loop_body3 = loop_body;
// Change the loop3 - insert an exit which leads to loop1.
- HBasicBlock* loop3_extra_if_block = new (GetAllocator()) HBasicBlock(graph_);
- graph_->AddBlock(loop3_extra_if_block);
+ HBasicBlock* loop3_extra_if_block = AddNewBlock();
loop3_extra_if_block->AddInstruction(new (GetAllocator()) HIf(parameters_[0]));
loop3_header->ReplaceSuccessor(loop_body3, loop3_extra_if_block);
@@ -631,9 +623,9 @@
TEST_F(SuperblockClonerTest, FastCaseCheck) {
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- ArenaAllocator* arena = graph_->GetAllocator();
+ ArenaAllocator* arena = GetAllocator();
- InitGraph();
+ InitGraphAndParameters();
CreateBasicLoopControlFlow(entry_block_, return_block_, &header, &loop_body);
CreateBasicLoopDataFlow(header, loop_body);
graph_->BuildDominatorTree();
@@ -688,7 +680,7 @@
HBasicBlock* header = nullptr;
HBasicBlock* loop_body = nullptr;
- InitGraph();
+ InitGraphAndParameters();
// Create the following nested structure of loops
// Headers: 1 2 3 4 5