ART: Switch tagging table to a map
Performance is critical. A map involves overhead for moving GC,
but has much faster lookup for the common case.
Make test 905 robust against unstable ordering.
Bug: 31385027
Test: m test-art-host
Test: m ART_USE_READ_BARRIER=true test-art-host
Change-Id: Ica3ff603fc78168759fccfe79c97860279ce9036
diff --git a/test/905-object-free/tracking_free.cc b/test/905-object-free/tracking_free.cc
index 5905d48..b41a914 100644
--- a/test/905-object-free/tracking_free.cc
+++ b/test/905-object-free/tracking_free.cc
@@ -32,8 +32,10 @@
namespace art {
namespace Test905ObjectFree {
+static std::vector<jlong> collected_tags;
+
static void JNICALL ObjectFree(jvmtiEnv* ti_env ATTRIBUTE_UNUSED, jlong tag) {
- printf("ObjectFree tag=%zu\n", static_cast<size_t>(tag));
+ collected_tags.push_back(tag);
}
extern "C" JNIEXPORT void JNICALL Java_Main_setupObjectFreeCallback(
@@ -64,6 +66,19 @@
}
}
+extern "C" JNIEXPORT jlongArray JNICALL Java_Main_getCollectedTags(JNIEnv* env,
+ jclass klass ATTRIBUTE_UNUSED) {
+ jlongArray ret = env->NewLongArray(collected_tags.size());
+ if (ret == nullptr) {
+ return ret;
+ }
+
+ env->SetLongArrayRegion(ret, 0, collected_tags.size(), collected_tags.data());
+ collected_tags.clear();
+
+ return ret;
+}
+
// Don't do anything
jint OnLoad(JavaVM* vm,
char* options ATTRIBUTE_UNUSED,