summaryrefslogtreecommitdiff
path: root/openjdkjvmti/OpenjdkJvmTi.cc
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2018-08-30 12:50:27 -0700
committer Alex Light <allight@google.com> 2018-08-30 12:50:27 -0700
commitbbbcb535a9116b87c73f9fbdb74d6cfd74d8c026 (patch)
treefa857b9083dc78006f41655b0fcabac43f44a444 /openjdkjvmti/OpenjdkJvmTi.cc
parent134380d7c70d95962ed818458185e608ad17ff08 (diff)
Implement IterateOverInstances JVMTI function
This JVMTI function can be useful since it allows one to easily iterate over all instances of a class, including subclasses. Bug: 32635074 Test: ./test.py --host Change-Id: I31c3b54ca599964c64aa31fbf666253e9b8000c4
Diffstat (limited to 'openjdkjvmti/OpenjdkJvmTi.cc')
-rw-r--r--openjdkjvmti/OpenjdkJvmTi.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/openjdkjvmti/OpenjdkJvmTi.cc b/openjdkjvmti/OpenjdkJvmTi.cc
index 59f61e2ee4..3213bbe91a 100644
--- a/openjdkjvmti/OpenjdkJvmTi.cc
+++ b/openjdkjvmti/OpenjdkJvmTi.cc
@@ -506,13 +506,15 @@ class JvmtiFunctions {
static jvmtiError IterateOverInstancesOfClass(
jvmtiEnv* env,
- jclass klass ATTRIBUTE_UNUSED,
- jvmtiHeapObjectFilter object_filter ATTRIBUTE_UNUSED,
- jvmtiHeapObjectCallback heap_object_callback ATTRIBUTE_UNUSED,
- const void* user_data ATTRIBUTE_UNUSED) {
+ jclass klass,
+ jvmtiHeapObjectFilter object_filter,
+ jvmtiHeapObjectCallback heap_object_callback,
+ const void* user_data) {
ENSURE_VALID_ENV(env);
ENSURE_HAS_CAP(env, can_tag_objects);
- return ERR(NOT_IMPLEMENTED);
+ HeapUtil heap_util(ArtJvmTiEnv::AsArtJvmTiEnv(env)->object_tag_table.get());
+ return heap_util.IterateOverInstancesOfClass(
+ env, klass, object_filter, heap_object_callback, user_data);
}
static jvmtiError GetLocalObject(jvmtiEnv* env,