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.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/runtime/openjdkjvmti/ti_class.cc b/runtime/openjdkjvmti/ti_class.cc
index ce7e5ce7c2..0d1704ca4d 100644
--- a/runtime/openjdkjvmti/ti_class.cc
+++ b/runtime/openjdkjvmti/ti_class.cc
@@ -310,4 +310,22 @@ jvmtiError ClassUtil::GetClassModifiers(jvmtiEnv* env ATTRIBUTE_UNUSED,
return ERR(NONE);
}
+jvmtiError ClassUtil::GetClassLoader(jvmtiEnv* env ATTRIBUTE_UNUSED,
+ jclass jklass,
+ jobject* classloader_ptr) {
+ art::ScopedObjectAccess soa(art::Thread::Current());
+ art::ObjPtr<art::mirror::Class> klass = soa.Decode<art::mirror::Class>(jklass);
+ if (klass == nullptr) {
+ return ERR(INVALID_CLASS);
+ }
+
+ if (classloader_ptr == nullptr) {
+ return ERR(NULL_POINTER);
+ }
+
+ *classloader_ptr = soa.AddLocalReference<jobject>(klass->GetClassLoader());
+
+ return ERR(NONE);
+}
+
} // namespace openjdkjvmti