Fix a few issues with 616-cha-unloading.

- Disable test on RI
- Disable test on trace
- Don't try N times for getting the allocation we want, do it
  until we get it. We shouldn't get in an infinite loop. If
  we do the harness will kill the test.

Test: 616-cha-unloading
bug: 73143991
Change-Id: I1eaf6db1a79010f1e5dc33401e5ccf351ff10be2
diff --git a/test/616-cha-unloading/cha_unload.cc b/test/616-cha-unloading/cha_unload.cc
index 46ceac6..4be3456 100644
--- a/test/616-cha-unloading/cha_unload.cc
+++ b/test/616-cha-unloading/cha_unload.cc
@@ -37,20 +37,16 @@
   return static_cast<jlong>(reinterpret_cast<uintptr_t>(method));
 }
 
-extern "C" JNIEXPORT jboolean JNICALL Java_Main_tryReuseArenaOfMethod(JNIEnv*,
-                                                                      jclass,
-                                                                      jlong art_method,
-                                                                      jint tries_count) {
+extern "C" JNIEXPORT void JNICALL Java_Main_reuseArenaOfMethod(JNIEnv*,
+                                                               jclass,
+                                                               jlong art_method) {
   // Create a new allocation and use it to request a specified amount of arenas.
   // Hopefully one of them is a reused one, the one that covers the art_method pointer.
   std::unique_ptr<LinearAlloc> alloc(Runtime::Current()->CreateLinearAlloc());
-  for (int i = static_cast<int>(tries_count); i > 0; --i) {
+  do {
     // Ask for a byte - it's sufficient to get an arena and not have issues with size.
     alloc->Alloc(Thread::Current(), 1);
-  }
-  bool retval = alloc->Contains(reinterpret_cast<void*>(static_cast<uintptr_t>(art_method)));
-
-  return retval;
+  } while (!alloc->Contains(reinterpret_cast<void*>(static_cast<uintptr_t>(art_method))));
 }
 
 }  // namespace
diff --git a/test/616-cha-unloading/expected.txt b/test/616-cha-unloading/expected.txt
index a71b724..77a1486 100644
--- a/test/616-cha-unloading/expected.txt
+++ b/test/616-cha-unloading/expected.txt
@@ -1,4 +1,2 @@
 JNI_OnLoad called
-null
-true
 Done
diff --git a/test/616-cha-unloading/src-art/Main.java b/test/616-cha-unloading/src-art/Main.java
index b633a0c..effa315 100644
--- a/test/616-cha-unloading/src-art/Main.java
+++ b/test/616-cha-unloading/src-art/Main.java
@@ -53,12 +53,12 @@
     WeakReference<ClassLoader> loader = result.cl;
     long methodPtr = result.methodPtr;
     // Check that the classloader is indeed unloaded.
-    System.out.println(loader.get());
+    if (loader.get() != null) {
+      throw new Error("Expected class loader to be unloaded");
+    }
 
-    // Reuse the linear alloc so old pointers so it becomes invalid.
-    boolean ret = tryReuseArenaOfMethod(methodPtr, 10);
-    // Check that we indeed reused it.
-    System.out.println(ret);
+    // Reuse the linear alloc used by the unloaded class loader.
+    reuseArenaOfMethod(methodPtr);
 
     // Try to JIT-compile under dangerous conditions.
     ensureJitCompiled(Main.class, "targetMethodForJit");
@@ -117,5 +117,5 @@
 
   private static native void ensureJitCompiled(Class<?> itf, String method_name);
   private static native long getArtMethod(Object javaMethod);
-  private static native boolean tryReuseArenaOfMethod(long artMethod, int tries_count);
+  private static native void reuseArenaOfMethod(long artMethod);
 }
diff --git a/test/knownfailures.json b/test/knownfailures.json
index 7292280..9f0f954 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -949,7 +949,17 @@
         ],
         "variant": "jvm",
         "bug": "b/73888836",
-        "description": ["Failing on JVM. Needs further investigating."]
+        "description": ["Failing on RI. Needs further investigating."]
+    },
+    {
+        "tests": ["616-cha-unloading"],
+        "variant": "jvm",
+        "description": ["Doesn't run on RI."]
+    },
+    {
+        "tests": ["616-cha-unloading"],
+        "variant": "trace",
+        "description": ["Trace prevents class unloading."]
     },
     {
         "tests": "677-fsi",