ART: Refactor some TI test code for reuse
Pull out helper code for creating arrays of data.
Bug: 31385354
Test: m test-art-host
Change-Id: I916fffa18f5a61bd17acbdbdaffce5b4c66a33ab
diff --git a/test/907-get-loaded-classes/get_loaded_classes.cc b/test/907-get-loaded-classes/get_loaded_classes.cc
index 0e09d1b..ce929a6 100644
--- a/test/907-get-loaded-classes/get_loaded_classes.cc
+++ b/test/907-get-loaded-classes/get_loaded_classes.cc
@@ -27,6 +27,7 @@
#include "ScopedLocalRef.h"
#include "ScopedUtfChars.h"
+#include "ti-agent/common_helper.h"
#include "ti-agent/common_load.h"
namespace art {
@@ -50,28 +51,14 @@
return nullptr;
}
- ScopedLocalRef<jclass> obj_class(env, env->FindClass("java/lang/String"));
- if (obj_class.get() == nullptr) {
- return nullptr;
- }
-
- jobjectArray ret = env->NewObjectArray(count, obj_class.get(), nullptr);
- if (ret == nullptr) {
- return ret;
- }
-
- for (size_t i = 0; i < static_cast<size_t>(count); ++i) {
+ auto callback = [&](jint i) {
jstring class_name = GetClassName(env, classes[i]);
- env->SetObjectArrayElement(ret, static_cast<jint>(i), class_name);
- env->DeleteLocalRef(class_name);
- }
-
- // Need to:
- // 1) Free the local references.
- // 2) Deallocate.
- for (size_t i = 0; i < static_cast<size_t>(count); ++i) {
env->DeleteLocalRef(classes[i]);
- }
+ return class_name;
+ };
+ jobjectArray ret = CreateObjectArray(env, count, "java/lang/String", callback);
+
+ // Need to Deallocate.
jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(classes));
return ret;