diff --git a/jcl/src/java.base/share/classes/jdk/internal/misc/Unsafe.java b/jcl/src/java.base/share/classes/jdk/internal/misc/Unsafe.java index 87d67bbdc45..cfef874309d 100644 --- a/jcl/src/java.base/share/classes/jdk/internal/misc/Unsafe.java +++ b/jcl/src/java.base/share/classes/jdk/internal/misc/Unsafe.java @@ -6929,14 +6929,14 @@ public int nullMarkerOffset(Field f) { * Reports the kind of layout used for an element in the storage * allocation of the given array. * - * @param arrayClass array class to inspect + * @param array array to inspect * @return layout kind of the array elements */ - public int arrayLayout(Class arrayClass) { - if (null == arrayClass) { + public int arrayLayout(Object[] array) { + if (null == array) { throw new NullPointerException(); } - return isFlatArray(arrayClass) ? ARRAY_LAYOUT_FLATTENED : ARRAY_LAYOUT_REFERENCE; + return isFlatArray(array.getClass()) ? ARRAY_LAYOUT_FLATTENED : ARRAY_LAYOUT_REFERENCE; } /** diff --git a/test/functional/Valhalla/src_qtypes/org/openj9/test/lworld/ValueTypeUnsafeTests.java b/test/functional/Valhalla/src_qtypes/org/openj9/test/lworld/ValueTypeUnsafeTests.java index a30113288b7..83a1dea2061 100644 --- a/test/functional/Valhalla/src_qtypes/org/openj9/test/lworld/ValueTypeUnsafeTests.java +++ b/test/functional/Valhalla/src_qtypes/org/openj9/test/lworld/ValueTypeUnsafeTests.java @@ -287,7 +287,7 @@ static public void testNonVTClzGetValue() throws Throwable { @Test static public void testGetValuesOfArray() throws Throwable { if (isFlatteningEnabled) { - int layout = myUnsafe.arrayLayout(vtPointAry.getClass()); + int layout = myUnsafe.arrayLayout(vtPointAry); ValueTypePoint2D p = myUnsafe.getFlatValue(vtPointAry, vtPointAryOffset0, layout, ValueTypePoint2D.class); assertEquals(p.x.i, vtPointAry[0].x.i); assertEquals(p.y.i, vtPointAry[0].y.i); @@ -304,7 +304,7 @@ static public void testGetValueOfZeroSizeVTArrayDoesNotCauseError() throws Throw 2, new ZeroSizeValueType()); long zsvtAryOffset0 = myUnsafe.arrayBaseOffset(zsvtAry.getClass()); - int layout = myUnsafe.arrayLayout(zsvtAry.getClass()); + int layout = myUnsafe.arrayLayout(zsvtAry); assertNotNull(myUnsafe.getFlatValue(zsvtAry, zsvtAryOffset0, layout, ZeroSizeValueType.class)); } } @@ -427,7 +427,7 @@ static public void testPutValueWithNonVTObj() throws Throwable { static public void testPutValuesOfArray() throws Throwable { if (isFlatteningEnabled) { ValueTypePoint2D p = new ValueTypePoint2D(new ValueTypeInt(34857), new ValueTypeInt(784382)); - int layout = myUnsafe.arrayLayout(vtPointAry.getClass()); + int layout = myUnsafe.arrayLayout(vtPointAry); myUnsafe.putFlatValue(vtPointAry, vtPointAryOffset0, layout, ValueTypePoint2D.class, p); assertEquals(vtPointAry[0].x.i, p.x.i); assertEquals(vtPointAry[0].y.i, p.y.i); @@ -446,7 +446,7 @@ static public void testPutValueWithZeroSizeVTArrayDoesNotCauseError() throws Thr 2, new ZeroSizeValueType()); long zsvtAryOffset0 = myUnsafe.arrayBaseOffset(zsvtAry.getClass()); - int layout = myUnsafe.arrayLayout(zsvtAry.getClass()); + int layout = myUnsafe.arrayLayout(zsvtAry); myUnsafe.putFlatValue(zsvtAry, zsvtAryOffset0, layout, ZeroSizeValueType.class, new ZeroSizeValueType()); } } @@ -640,7 +640,7 @@ static public void testCompareAndSetArray0Success(CompareAndDoSomethingFunction if (isFlatteningEnabled) { int original = vtIntAry[0].i; ValueTypeInt newVti = new ValueTypeInt(456); - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); boolean success = compareAndSwapValue.execute(vtIntAry, vtIntAryOffset0, layout, ValueTypeInt.class, vtIntAry[0], newVti); assertEquals(newVti.i, 456); assertTrue(success); @@ -653,7 +653,7 @@ static public void testCompareAndSetArray1Success(CompareAndDoSomethingFunction if (isFlatteningEnabled) { int original = vtIntAry[1].i; ValueTypeInt newVti = new ValueTypeInt(456); - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); boolean success = compareAndSwapValue.execute(vtIntAry, vtIntAryOffset1, layout, ValueTypeInt.class, vtIntAry[1], newVti); assertEquals(newVti.i, 456); assertTrue(success); @@ -666,7 +666,7 @@ static public void testCompareAndSetArray0Failure(CompareAndDoSomethingFunction if (isFlatteningEnabled) { int original = vtIntAry[0].i; ValueTypeInt newVti = new ValueTypeInt(328); - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); boolean success = compareAndSwapValue.execute(vtIntAry, vtIntAryOffset0, layout, ValueTypeInt.class, new ValueTypeInt(original + 1), newVti); assertEquals(newVti.i, 328); assertFalse(success); @@ -679,7 +679,7 @@ static public void testCompareAndSetArray1Failure(CompareAndDoSomethingFunction if (isFlatteningEnabled) { int original = vtIntAry[1].i; ValueTypeInt newVti = new ValueTypeInt(328); - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); boolean success = compareAndSwapValue.execute(vtIntAry, vtIntAryOffset1, layout, ValueTypeInt.class, new ValueTypeInt(original + 1), newVti); assertEquals(newVti.i, 328); assertFalse(success); @@ -779,7 +779,7 @@ static public void testGetAndSetPointY() throws Throwable { @Test static public void testGetAndSetArray0() throws Throwable { if (isFlatteningEnabled) { - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); int original = vtIntAry[0].i; ValueTypeInt newVti = new ValueTypeInt(456); Object result = myUnsafe.getAndSetFlatValue(vtIntAry, vtIntAryOffset0, layout, ValueTypeInt.class, newVti); @@ -792,7 +792,7 @@ static public void testGetAndSetArray0() throws Throwable { @Test static public void testGetAndSetArray1() throws Throwable { if (isFlatteningEnabled) { - int layout = myUnsafe.arrayLayout(vtIntAry.getClass()); + int layout = myUnsafe.arrayLayout(vtIntAry); int original = vtIntAry[1].i; ValueTypeInt newVti = new ValueTypeInt(456); Object result = myUnsafe.getAndSetFlatValue(vtIntAry, vtIntAryOffset1, layout, ValueTypeInt.class, newVti);