summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/art_method-inl.h5
-rw-r--r--runtime/thread.cc1
2 files changed, 5 insertions, 1 deletions
diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h
index 5cfce41..28a5e67 100644
--- a/runtime/art_method-inl.h
+++ b/runtime/art_method-inl.h
@@ -20,6 +20,7 @@
#include "art_method.h"
#include "art_field.h"
+#include "base/logging.h"
#include "dex_file.h"
#include "dex_file-inl.h"
#include "gc_root-inl.h"
@@ -314,7 +315,9 @@ inline uintptr_t ArtMethod::NativeQuickPcOffset(const uintptr_t pc) {
inline QuickMethodFrameInfo ArtMethod::GetQuickFrameInfo(const void* code_pointer) {
DCHECK(code_pointer != nullptr);
- DCHECK_EQ(code_pointer, GetQuickOatCodePointer(sizeof(void*)));
+ if (kIsDebugBuild && !IsProxyMethod()) {
+ CHECK_EQ(code_pointer, GetQuickOatCodePointer(sizeof(void*)));
+ }
return reinterpret_cast<const OatQuickMethodHeader*>(code_pointer)[-1].frame_info_;
}
diff --git a/runtime/thread.cc b/runtime/thread.cc
index f314f61..5274f9e 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -1048,6 +1048,7 @@ struct StackDumpVisitor : public StackVisitor {
if (m->IsRuntimeMethod()) {
return true;
}
+ m = m->GetInterfaceMethodIfProxy(sizeof(void*));
const int kMaxRepetition = 3;
mirror::Class* c = m->GetDeclaringClass();
mirror::DexCache* dex_cache = c->GetDexCache();