Fix DumpNativeStack function for traced methods. (part 2)
The alignment didn't work for thumb due to least significant bit set.
Bug: 123510633
Test: ./art/test.py -b -r -t 163
Change-Id: I173bdef1050c79a7431955034e3eb001d1efae05
diff --git a/runtime/native_stack_dump.cc b/runtime/native_stack_dump.cc
index 40bab0f..150fa78 100644
--- a/runtime/native_stack_dump.cc
+++ b/runtime/native_stack_dump.cc
@@ -301,10 +301,9 @@
class_linker->IsQuickToInterpreterBridge(entry_point)) {
return false;
}
- // The backtrace library might have heuristically subracted 1 from the pc,
- // to pretend the pc is at the calling instruction.
- DCHECK_ALIGNED(GetQuickInstrumentationExitPc(), sizeof(void*));
- if (AlignUp(reinterpret_cast<void*>(pc), sizeof(void*)) == GetQuickInstrumentationExitPc()) {
+ // The backtrace library might have heuristically subracted instruction
+ // size from the pc, to pretend the pc is at the calling instruction.
+ if (reinterpret_cast<uintptr_t>(GetQuickInstrumentationExitPc()) - pc <= 4) {
return false;
}
uintptr_t code = reinterpret_cast<uintptr_t>(EntryPointToCodePointer(entry_point));