< prev index next >
test/hotspot/jtreg/vmTestbase/nsk/jvmti/IterateThroughHeap/filter-tagged/HeapFilter.cpp
Print this page
@@ -59,14 +59,15 @@
static int reported_objects = 0;
//expected values
#define INT_ARRAY_LENGTH 2
-static jint TAGGED_STATIC_INT_VALUE = 0xC0DE01;
-static jint TAGGED_INT_VALUE = 0xC0DE02;
-static jint UNTAGGED_STATIC_INT_VALUE = 0xC0DE03;
-static jint UNTAGGED_INT_VALUE = 0xC0DE04;
+static jint POISON = 0x1234;
+static jint TAGGED_STATIC_INT_VALUE = 0xC0DE01 + POISON;
+static jint TAGGED_INT_VALUE = 0xC0DE02 + POISON;
+static jint UNTAGGED_STATIC_INT_VALUE = 0xC0DE03 + POISON;
+static jint UNTAGGED_INT_VALUE = 0xC0DE04 + POISON;
static jint TAGGED_INT_ARRAY_VALUE[] = {0xC0DE01,
0xC0DE01+1};
static jint UNTAGGED_INT_ARRAY_VALUE[] = {0xC0DE03,
0xC0DE03+1};
static const wchar_t *TAGGED_STRING_VALUE = L"I'm a tagged string";
@@ -350,10 +351,18 @@
}
is_static = (modifiers & STATIC_FIELD) == STATIC_FIELD;
if (is_primitive_type(objects_info[object].fields[field].signature)) {
objects_info[object].fields[field].primitive = 1;
is_primitive = 1;
+ // Add POISON to all int fields to make the value opaque to the JIT compiler.
+ if (is_static) {
+ jint value = jni->GetStaticIntField(targetClass, targetFields[field]);
+ jni->SetStaticIntField(targetClass, targetFields[field], value + POISON);
+ } else {
+ jint value = jni->GetIntField(target, targetFields[field]);
+ jni->SetIntField(target, targetFields[field], value + POISON);
+ }
} else {
jobject value;
if (!NSK_JVMTI_VERIFY(jvmti->GetFieldModifiers(
targetClass, targetFields[field], &modifiers))) {
return JNI_ERR;
< prev index next >