summaryrefslogtreecommitdiff
path: root/test/912-classes/classes.cc
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2017-01-06 23:49:35 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-01-06 23:49:36 +0000
commit2d02f857d3a9b06478fe11592e014deec6e5c54f (patch)
treea1205b17b6b74604611e72825066a850257abc2c /test/912-classes/classes.cc
parent1b2f6c36c7aea739f048733ca93927e4b3a143c7 (diff)
parent8b07e4704f6150efdf1aed9591d9f7e4a4b0708b (diff)
Merge "ART: Add GetImplementedInterfaces"
Diffstat (limited to 'test/912-classes/classes.cc')
-rw-r--r--test/912-classes/classes.cc34
1 files changed, 32 insertions, 2 deletions
diff --git a/test/912-classes/classes.cc b/test/912-classes/classes.cc
index 3383d04319..5674e7b9a3 100644
--- a/test/912-classes/classes.cc
+++ b/test/912-classes/classes.cc
@@ -121,7 +121,11 @@ extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getClassFields(
fields[i],
(modifiers & kStatic) != 0 ? JNI_TRUE : JNI_FALSE);
};
- return CreateObjectArray(env, count, "java/lang/Object", callback);
+ jobjectArray ret = CreateObjectArray(env, count, "java/lang/Object", callback);
+ if (fields != nullptr) {
+ jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(fields));
+ }
+ return ret;
}
extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getClassMethods(
@@ -145,7 +149,33 @@ extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getClassMethods(
methods[i],
(modifiers & kStatic) != 0 ? JNI_TRUE : JNI_FALSE);
};
- return CreateObjectArray(env, count, "java/lang/Object", callback);
+ jobjectArray ret = CreateObjectArray(env, count, "java/lang/Object", callback);
+ if (methods != nullptr) {
+ jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(methods));
+ }
+ return ret;
+}
+
+extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getImplementedInterfaces(
+ JNIEnv* env, jclass Main_klass ATTRIBUTE_UNUSED, jclass klass) {
+ jint count = 0;
+ jclass* classes = nullptr;
+ jvmtiError result = jvmti_env->GetImplementedInterfaces(klass, &count, &classes);
+ if (result != JVMTI_ERROR_NONE) {
+ char* err;
+ jvmti_env->GetErrorName(result, &err);
+ printf("Failure running GetImplementedInterfaces: %s\n", err);
+ return nullptr;
+ }
+
+ auto callback = [&](jint i) {
+ return classes[i];
+ };
+ jobjectArray ret = CreateObjectArray(env, count, "java/lang/Class", callback);
+ if (classes != nullptr) {
+ jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(classes));
+ }
+ return ret;
}
extern "C" JNIEXPORT jint JNICALL Java_Main_getClassStatus(