RFR (XS) 8241500: FieldLayout/OldLayoutCheck.java fails in 32-bit VMs
Aleksey Shipilev
shade at redhat.com
Tue Mar 24 10:54:35 UTC 2020
Test bug:
https://bugs.openjdk.java.net/browse/JDK-8241500
See the brief discussion and JOL dump in the bug.
Fix:
diff -r cc739b0abc44 test/hotspot/jtreg/runtime/FieldLayout/OldLayoutCheck.java
--- a/test/hotspot/jtreg/runtime/FieldLayout/OldLayoutCheck.java Tue Mar 24 06:13:39 2020 +0100
+++ b/test/hotspot/jtreg/runtime/FieldLayout/OldLayoutCheck.java Tue Mar 24 11:52:36 2020 +0100
@@ -45,28 +45,32 @@
import java.util.Arrays;
import java.util.Comparator;
import jdk.internal.misc.Unsafe;
import jdk.test.lib.Asserts;
+import jdk.test.lib.Platform;
public class OldLayoutCheck {
static class LIClass {
public long l;
public int i;
}
+ static final long INT_OFFSET = Platform.is64bit() ? 12L : 16L;
+ static final long LONG_OFFSET = Platform.is64bit() ? 16L : 8L;
+
static public void main(String[] args) {
Unsafe unsafe = Unsafe.getUnsafe();
Class c = LIClass.class;
Field[] fields = c.getFields();
for (int i = 0; i < fields.length; i++) {
long offset = unsafe.objectFieldOffset(fields[i]);
if (fields[i].getType() == int.class) {
- Asserts.assertEquals(offset, 12L, "Misplaced int field");
+ Asserts.assertEquals(offset, INT_OFFSET, "Misplaced int field");
} else if (fields[i].getType() == long.class) {
- Asserts.assertEquals(offset, 16L, "Misplaced long field");
+ Asserts.assertEquals(offset, LONG_OFFSET, "Misplaced long field");
} else {
Asserts.fail("Unexpected field type");
}
}
}
Testing: affected test on Linux {x86_64, x86_32}
--
Thanks,
-Aleksey
More information about the hotspot-runtime-dev
mailing list