diff options
Diffstat (limited to 'compiler/exception_test.cc')
-rw-r--r-- | compiler/exception_test.cc | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/compiler/exception_test.cc b/compiler/exception_test.cc index 7bacacf91d..f00fe637cf 100644 --- a/compiler/exception_test.cc +++ b/compiler/exception_test.cc @@ -42,6 +42,11 @@ namespace art { class ExceptionTest : public CommonRuntimeTest { protected: + // Since various dexers may differ in bytecode layout, we play + // it safe and simply set the dex pc to the start of the method, + // which always points to the first source statement. + static constexpr const uint32_t kDexPc = 0; + virtual void SetUp() { CommonRuntimeTest::SetUp(); @@ -66,7 +71,7 @@ class ExceptionTest : public CommonRuntimeTest { ArenaStack arena_stack(&pool); ScopedArenaAllocator allocator(&arena_stack); StackMapStream stack_maps(&allocator, kRuntimeISA); - stack_maps.BeginStackMapEntry(/* dex_pc */ 3u, + stack_maps.BeginStackMapEntry(kDexPc, /* native_pc_offset */ 3u, /* register_mask */ 0u, /* sp_mask */ nullptr, @@ -181,11 +186,6 @@ TEST_F(ExceptionTest, StackTraceElement) { ASSERT_EQ(kStackAlignment, 16U); // ASSERT_EQ(sizeof(uintptr_t), sizeof(uint32_t)); - - // Create three fake stack frames with mapping data created in SetUp. We map offset 3 in the - // code to dex pc 3. - const uint32_t dex_pc = 3; - // Create the stack frame for the callee save method, expected by the runtime. fake_stack.push_back(reinterpret_cast<uintptr_t>(save_method)); for (size_t i = 0; i < frame_info.FrameSizeInBytes() - 2 * sizeof(uintptr_t); @@ -194,14 +194,14 @@ TEST_F(ExceptionTest, StackTraceElement) { } fake_stack.push_back(method_g_->GetOatQuickMethodHeader(0)->ToNativeQuickPc( - method_g_, dex_pc, /* is_catch_handler */ false)); // return pc + method_g_, kDexPc, /* is_catch_handler */ false)); // return pc // Create/push fake 16byte stack frame for method g fake_stack.push_back(reinterpret_cast<uintptr_t>(method_g_)); fake_stack.push_back(0); fake_stack.push_back(0); fake_stack.push_back(method_g_->GetOatQuickMethodHeader(0)->ToNativeQuickPc( - method_g_, dex_pc, /* is_catch_handler */ false)); // return pc + method_g_, kDexPc, /* is_catch_handler */ false)); // return pc // Create/push fake 16byte stack frame for method f fake_stack.push_back(reinterpret_cast<uintptr_t>(method_f_)); @@ -217,7 +217,7 @@ TEST_F(ExceptionTest, StackTraceElement) { fake_stack.push_back(0); fake_stack.push_back(0); - // Set up thread to appear as if we called out of method_g_ at pc dex 3 + // Set up thread to appear as if we called out of method_g_ at given pc dex. thread->SetTopOfStack(reinterpret_cast<ArtMethod**>(&fake_stack[0])); jobject internal = thread->CreateInternalStackTrace<false>(soa); @@ -233,7 +233,7 @@ TEST_F(ExceptionTest, StackTraceElement) { EXPECT_STREQ("ExceptionHandle.java", trace_array->Get(0)->GetFileName()->ToModifiedUtf8().c_str()); EXPECT_STREQ("g", trace_array->Get(0)->GetMethodName()->ToModifiedUtf8().c_str()); - EXPECT_EQ(37, trace_array->Get(0)->GetLineNumber()); + EXPECT_EQ(36, trace_array->Get(0)->GetLineNumber()); ASSERT_TRUE(trace_array->Get(1) != nullptr); EXPECT_STREQ("ExceptionHandle", |