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;