Don't run ReferenceTypePropagation without a Thread
Update some of our gtests to create a Runtime, as
ReferenceTypePropagation expects to have one.
Test: run gtests
Change-Id: I75986b1a9dc0227ee05f507f2b03ffa8aa8f8e58
diff --git a/compiler/optimizing/codegen_test.cc b/compiler/optimizing/codegen_test.cc
index 9f1f62b..2d9acc4 100644
--- a/compiler/optimizing/codegen_test.cc
+++ b/compiler/optimizing/codegen_test.cc
@@ -64,7 +64,7 @@
return v;
}
-class CodegenTest : public OptimizingUnitTest {
+class CodegenTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data, bool has_result = false, int32_t expected = 0);
void TestCodeLong(const std::vector<uint16_t>& data, bool has_result, int64_t expected);
diff --git a/compiler/optimizing/constant_folding_test.cc b/compiler/optimizing/constant_folding_test.cc
index 7c3dae2..9acfa35 100644
--- a/compiler/optimizing/constant_folding_test.cc
+++ b/compiler/optimizing/constant_folding_test.cc
@@ -32,7 +32,7 @@
/**
* Fixture class for the constant folding and dce tests.
*/
-class ConstantFoldingTest : public OptimizingUnitTest {
+class ConstantFoldingTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
public:
ConstantFoldingTest() : graph_(nullptr) { }
diff --git a/compiler/optimizing/dead_code_elimination_test.cc b/compiler/optimizing/dead_code_elimination_test.cc
index fcf4ca3..b789434 100644
--- a/compiler/optimizing/dead_code_elimination_test.cc
+++ b/compiler/optimizing/dead_code_elimination_test.cc
@@ -26,7 +26,7 @@
namespace art HIDDEN {
-class DeadCodeEliminationTest : public OptimizingUnitTest {
+class DeadCodeEliminationTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data,
const std::string& expected_before,
diff --git a/compiler/optimizing/dominator_test.cc b/compiler/optimizing/dominator_test.cc
index d3b8cb1..5f366eb 100644
--- a/compiler/optimizing/dominator_test.cc
+++ b/compiler/optimizing/dominator_test.cc
@@ -25,7 +25,7 @@
namespace art HIDDEN {
-class OptimizerTest : public OptimizingUnitTest {
+class OptimizerTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data, const uint32_t* blocks, size_t blocks_length);
};
diff --git a/compiler/optimizing/find_loops_test.cc b/compiler/optimizing/find_loops_test.cc
index 8d8c3a1..8857b2a 100644
--- a/compiler/optimizing/find_loops_test.cc
+++ b/compiler/optimizing/find_loops_test.cc
@@ -28,7 +28,7 @@
namespace art HIDDEN {
-class FindLoopsTest : public OptimizingUnitTest {};
+class FindLoopsTest : public CommonCompilerTest, public OptimizingUnitTestHelper {};
TEST_F(FindLoopsTest, CFG1) {
// Constant is not used.
diff --git a/compiler/optimizing/graph_checker_test.cc b/compiler/optimizing/graph_checker_test.cc
index 9a2fc89..b256fbb 100644
--- a/compiler/optimizing/graph_checker_test.cc
+++ b/compiler/optimizing/graph_checker_test.cc
@@ -20,7 +20,7 @@
namespace art HIDDEN {
-class GraphCheckerTest : public OptimizingUnitTest {
+class GraphCheckerTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
HGraph* CreateSimpleCFG();
void TestCode(const std::vector<uint16_t>& data);
diff --git a/compiler/optimizing/linearize_test.cc b/compiler/optimizing/linearize_test.cc
index b39bac5..01daa23 100644
--- a/compiler/optimizing/linearize_test.cc
+++ b/compiler/optimizing/linearize_test.cc
@@ -31,7 +31,7 @@
namespace art HIDDEN {
-class LinearizeTest : public OptimizingUnitTest {
+class LinearizeTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
template <size_t number_of_blocks>
void TestCode(const std::vector<uint16_t>& data,
diff --git a/compiler/optimizing/live_ranges_test.cc b/compiler/optimizing/live_ranges_test.cc
index 4f52fdb..fb1a23e 100644
--- a/compiler/optimizing/live_ranges_test.cc
+++ b/compiler/optimizing/live_ranges_test.cc
@@ -28,7 +28,7 @@
namespace art HIDDEN {
-class LiveRangesTest : public OptimizingUnitTest {
+class LiveRangesTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
HGraph* BuildGraph(const std::vector<uint16_t>& data);
diff --git a/compiler/optimizing/liveness_test.cc b/compiler/optimizing/liveness_test.cc
index a276373..0b421cf 100644
--- a/compiler/optimizing/liveness_test.cc
+++ b/compiler/optimizing/liveness_test.cc
@@ -28,7 +28,7 @@
namespace art HIDDEN {
-class LivenessTest : public OptimizingUnitTest {
+class LivenessTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data, const char* expected);
};
diff --git a/compiler/optimizing/pretty_printer_test.cc b/compiler/optimizing/pretty_printer_test.cc
index 5ed3944..90d5f8f 100644
--- a/compiler/optimizing/pretty_printer_test.cc
+++ b/compiler/optimizing/pretty_printer_test.cc
@@ -28,7 +28,7 @@
namespace art HIDDEN {
-class PrettyPrinterTest : public OptimizingUnitTest {
+class PrettyPrinterTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data, const char* expected);
};
diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc
index 2b0a118..48d33f2 100644
--- a/compiler/optimizing/reference_type_propagation.cc
+++ b/compiler/optimizing/reference_type_propagation.cc
@@ -123,8 +123,8 @@
: HOptimization(graph, name), hint_dex_cache_(hint_dex_cache), is_first_run_(is_first_run) {}
void ReferenceTypePropagation::ValidateTypes() {
- // TODO: move this to the graph checker. Note: There may be no Thread for gtests.
- if (kIsDebugBuild && Thread::Current() != nullptr) {
+ // TODO: move this to the graph checker.
+ if (kIsDebugBuild) {
ScopedObjectAccess soa(Thread::Current());
for (HBasicBlock* block : graph_->GetReversePostOrder()) {
for (HInstructionIterator iti(block->GetInstructions()); !iti.Done(); iti.Advance()) {
@@ -333,6 +333,9 @@
}
bool ReferenceTypePropagation::Run() {
+ DCHECK(Thread::Current() != nullptr)
+ << "ReferenceTypePropagation requires the use of Thread::Current(). Make sure you have a "
+ << "Runtime initialized before calling this optimization pass";
RTPVisitor visitor(graph_, hint_dex_cache_, is_first_run_);
// To properly propagate type info we need to visit in the dominator-based order.
diff --git a/compiler/optimizing/register_allocator_test.cc b/compiler/optimizing/register_allocator_test.cc
index dabd4a3..d316aa5 100644
--- a/compiler/optimizing/register_allocator_test.cc
+++ b/compiler/optimizing/register_allocator_test.cc
@@ -39,10 +39,10 @@
// Note: the register allocator tests rely on the fact that constants have live
// intervals and registers get allocated to them.
-class RegisterAllocatorTest : public OptimizingUnitTest {
+class RegisterAllocatorTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void SetUp() override {
- OptimizingUnitTest::SetUp();
+ CommonCompilerTest::SetUp();
// This test is using the x86 ISA.
compiler_options_ = CommonCompilerTest::CreateCompilerOptions(InstructionSet::kX86, "default");
}
diff --git a/compiler/optimizing/scheduler_test.cc b/compiler/optimizing/scheduler_test.cc
index 6eea87f..165bfe3 100644
--- a/compiler/optimizing/scheduler_test.cc
+++ b/compiler/optimizing/scheduler_test.cc
@@ -66,7 +66,7 @@
return v;
}
-class SchedulerTest : public OptimizingUnitTest {
+class SchedulerTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
public:
SchedulerTest() : graph_(CreateGraph()) { }
diff --git a/compiler/optimizing/ssa_test.cc b/compiler/optimizing/ssa_test.cc
index 008e435..980493d 100644
--- a/compiler/optimizing/ssa_test.cc
+++ b/compiler/optimizing/ssa_test.cc
@@ -30,7 +30,7 @@
namespace art HIDDEN {
-class SsaTest : public OptimizingUnitTest {
+class SsaTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data, const char* expected);
};
diff --git a/compiler/optimizing/suspend_check_test.cc b/compiler/optimizing/suspend_check_test.cc
index 93a84b4..76e7e0c 100644
--- a/compiler/optimizing/suspend_check_test.cc
+++ b/compiler/optimizing/suspend_check_test.cc
@@ -29,7 +29,7 @@
* Check that the HGraphBuilder adds suspend checks to backward branches.
*/
-class SuspendCheckTest : public OptimizingUnitTest {
+class SuspendCheckTest : public CommonCompilerTest, public OptimizingUnitTestHelper {
protected:
void TestCode(const std::vector<uint16_t>& data);
};