Give WalkStack's callback a way to terminate early.
Also combine WalkStack and WalkStackUntilUpcall.
Change-Id: Ida25665de72e5fd8e17946886a387b27cf841457
diff --git a/test/StackWalk/stack_walk_jni.cc b/test/StackWalk/stack_walk_jni.cc
index 69b4837..65b3284 100644
--- a/test/StackWalk/stack_walk_jni.cc
+++ b/test/StackWalk/stack_walk_jni.cc
@@ -42,7 +42,7 @@
ReferenceMapVisitor() {
}
- void VisitFrame(const Frame& frame, uintptr_t pc) {
+ bool VisitFrame(const Frame& frame, uintptr_t pc) {
Method* m = frame.GetMethod();
CHECK(m != NULL);
LOG(INFO) << "At " << PrettyMethod(m, false);
@@ -50,7 +50,7 @@
if (m->IsCalleeSaveMethod() || m->IsNative()) {
LOG(WARNING) << "no PC for " << PrettyMethod(m);
CHECK_EQ(pc, 0u);
- return;
+ return true;
}
verifier::PcToReferenceMap map(m->GetGcMap(), m->GetGcMapLength());
const uint8_t* reg_bitmap = map.FindBitMap(m->ToDexPC(pc));
@@ -89,6 +89,8 @@
}
}
LOG(INFO) << reinterpret_cast<const void*>(reg_bitmap);
+
+ return true;
}
};