summaryrefslogtreecommitdiff
path: root/runtime/openjdkjvmti/ti_class.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/openjdkjvmti/ti_class.cc')
-rw-r--r--runtime/openjdkjvmti/ti_class.cc15
1 files changed, 5 insertions, 10 deletions
diff --git a/runtime/openjdkjvmti/ti_class.cc b/runtime/openjdkjvmti/ti_class.cc
index b8e79555ae..99dfcfe665 100644
--- a/runtime/openjdkjvmti/ti_class.cc
+++ b/runtime/openjdkjvmti/ti_class.cc
@@ -46,6 +46,7 @@
#include "events-inl.h"
#include "fixed_up_dex_file.h"
#include "gc/heap.h"
+#include "gc/heap-visit-objects-inl.h"
#include "gc_root.h"
#include "handle.h"
#include "jni_env_ext-inl.h"
@@ -544,21 +545,15 @@ struct ClassCallback : public art::ClassLoadCallback {
LOG(FATAL) << "Unreachable";
}
- static void AllObjectsCallback(art::mirror::Object* obj, void* arg)
- REQUIRES_SHARED(art::Locks::mutator_lock_) {
- HeapFixupVisitor* hfv = reinterpret_cast<HeapFixupVisitor*>(arg);
-
- // Visit references, not native roots.
- obj->VisitReferences<false>(*hfv, *hfv);
- }
-
private:
const art::mirror::Class* input_;
art::mirror::Class* output_;
};
HeapFixupVisitor hfv(input, output);
- art::Runtime::Current()->GetHeap()->VisitObjectsPaused(HeapFixupVisitor::AllObjectsCallback,
- &hfv);
+ auto object_visitor = [&](art::mirror::Object* obj) {
+ obj->VisitReferences<false>(hfv, hfv); // Visit references, not native roots.
+ };
+ art::Runtime::Current()->GetHeap()->VisitObjectsPaused(object_visitor);
}
// A set of all the temp classes we have handed out. We have to fix up references to these.