ART: Add GetAllThreads

Add support for GetAllThreads. Add a test.

Bug: 31684593
Test: m test-art-host-run-test-924-threads
Change-Id: I7068dd4d3700a32a87a44d38590e53df0bd238c7
diff --git a/test/924-threads/threads.cc b/test/924-threads/threads.cc
index 4abf8fc..1487b7c 100644
--- a/test/924-threads/threads.cc
+++ b/test/924-threads/threads.cc
@@ -100,5 +100,25 @@
   return state;
 }
 
+extern "C" JNIEXPORT jobjectArray JNICALL Java_Main_getAllThreads(
+    JNIEnv* env, jclass Main_klass ATTRIBUTE_UNUSED) {
+  jint thread_count;
+  jthread* threads;
+
+  jvmtiError result = jvmti_env->GetAllThreads(&thread_count, &threads);
+  if (JvmtiErrorToException(env, result)) {
+    return nullptr;
+  }
+
+  auto callback = [&](jint index) {
+    return threads[index];
+  };
+  jobjectArray ret = CreateObjectArray(env, thread_count, "java/lang/Thread", callback);
+
+  jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(threads));
+
+  return ret;
+}
+
 }  // namespace Test924Threads
 }  // namespace art