Make stack visitor location for bad roots more verbose.

Change-Id: Ib2f3f48ccf1f5b2f3a4d1a61df553ad1a5c29d38
diff --git a/src/thread.cc b/src/thread.cc
index 943fdcb..744a8aa 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -1838,12 +1838,12 @@
   return object->GetThinLockId() == thin_lock_id_;
 }
 
-// Visitor parameters are: (const Object* obj, size_t vreg, const AbstractMethod* method).
-template <typename Visitor>
+// RootVisitor parameters are: (const Object* obj, size_t vreg, const StackVisitor* visitor).
+template <typename RootVisitor>
 class ReferenceMapVisitor : public StackVisitor {
  public:
   ReferenceMapVisitor(const ManagedStack* stack, const std::vector<InstrumentationStackFrame>* instrumentation_stack,
-                      Context* context, const Visitor& visitor)
+                      Context* context, const RootVisitor& visitor)
       SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
       : StackVisitor(stack, instrumentation_stack, context), visitor_(visitor) {}
 
@@ -1854,7 +1854,7 @@
     }
     ShadowFrame* shadow_frame = GetCurrentShadowFrame();
     if (shadow_frame != NULL) {
-      WrapperVisitor wrapperVisitor(visitor_, shadow_frame->GetMethod());
+      WrapperVisitor wrapperVisitor(visitor_, this);
       shadow_frame->VisitRoots(wrapperVisitor);
     } else {
       AbstractMethod* m = GetMethod();
@@ -1893,7 +1893,7 @@
               }
 
               if (ref != NULL) {
-                visitor_(ref, reg, m);
+                visitor_(ref, reg, this);
               }
             }
           }
@@ -1907,19 +1907,16 @@
 
   class WrapperVisitor {
    public:
-    WrapperVisitor(const Visitor& visitor, AbstractMethod* method)
-        : visitor_(visitor),
-          method_(method) {
-
-    }
+    WrapperVisitor(const RootVisitor& root_visitor, const StackVisitor* stack_visitor)
+      : root_visitor_(root_visitor), stack_visitor_(stack_visitor) {}
 
     void operator()(const Object* obj, size_t offset) const {
-      visitor_(obj, offset, method_);
+      root_visitor_(obj, offset, stack_visitor_);
     }
 
    private:
-    const Visitor& visitor_;
-    AbstractMethod* method_;
+    const RootVisitor& root_visitor_;
+    const StackVisitor* const stack_visitor_;
   };
 
   static bool TestBitmap(int reg, const uint8_t* reg_vector) {
@@ -1927,7 +1924,7 @@
   }
 
   // Visitor for when we visit a root.
-  const Visitor& visitor_;
+  const RootVisitor& visitor_;
 
   // A method helper we keep around to avoid dex file/cache re-computations.
   MethodHelper mh_;
@@ -1939,7 +1936,7 @@
 
   }
 
-  void operator()(const Object* obj, size_t, const AbstractMethod*) const {
+  void operator()(const Object* obj, size_t, const StackVisitor*) const {
     visitor_(obj, arg_);
   }
 
@@ -1953,16 +1950,15 @@
   VerifyCallbackVisitor(Heap::VerifyRootVisitor* visitor, void* arg)
       : visitor_(visitor),
         arg_(arg) {
-
   }
 
-  void operator()(const Object* obj, size_t vreg, const AbstractMethod* method) const  {
-    visitor_(obj, arg_, vreg, method);
+  void operator()(const Object* obj, size_t vreg, const StackVisitor* visitor) const {
+    visitor_(obj, arg_, vreg, visitor);
   }
 
  private:
-  Heap::VerifyRootVisitor* visitor_;
-  void* arg_;
+  Heap::VerifyRootVisitor* const visitor_;
+  void* const arg_;
 };
 
 struct VerifyRootWrapperArg {