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;
   }
 };