Add ImprovedOptimizingUnitTest::CreateParameters for subclasses
Subclasses of ImprovedOptimizingUnitTest might need a different number
of graph parameters. Currently only a parameter is defined and created.
This CL adds ImprovedOptimizingUnitTest::CreateParameters which
subclasses can override to create as many parameters as they need. All
created parameters are added to the entry basic block. The default
implementation of ImprovedOptimizingUnitTest::CreateParameters does
nothing.
Test: run-gtests.sh
Change-Id: I2c6a58232e36d3562fc2bc0cdc289dd739094a73
diff --git a/compiler/optimizing/optimizing_unit_test.h b/compiler/optimizing/optimizing_unit_test.h
index e5f6941..0157126 100644
--- a/compiler/optimizing/optimizing_unit_test.h
+++ b/compiler/optimizing/optimizing_unit_test.h
@@ -194,8 +194,7 @@
ImprovedOptimizingUnitTest() : graph_(CreateGraph()),
entry_block_(nullptr),
return_block_(nullptr),
- exit_block_(nullptr),
- parameter_(nullptr) {}
+ exit_block_(nullptr) {}
virtual ~ImprovedOptimizingUnitTest() {}
@@ -214,11 +213,11 @@
entry_block_->AddSuccessor(return_block_);
return_block_->AddSuccessor(exit_block_);
- parameter_ = new (GetAllocator()) HParameterValue(graph_->GetDexFile(),
- dex::TypeIndex(0),
- 0,
- DataType::Type::kInt32);
- entry_block_->AddInstruction(parameter_);
+ CreateParameters();
+ for (HInstruction* parameter : parameters_) {
+ entry_block_->AddInstruction(parameter);
+ }
+
return_block_->AddInstruction(new (GetAllocator()) HReturnVoid());
exit_block_->AddInstruction(new (GetAllocator()) HExit());
}
@@ -250,13 +249,17 @@
}
protected:
+ // Create parameters to be added to the graph entry block.
+ // Subclasses can override it to create parameters they need.
+ virtual void CreateParameters() { /* do nothing */ }
+
HGraph* graph_;
HBasicBlock* entry_block_;
HBasicBlock* return_block_;
HBasicBlock* exit_block_;
- HInstruction* parameter_;
+ std::vector<HInstruction*> parameters_;
};
// Naive string diff data type.