< prev index next >
test/jdk/valhalla/valuetypes/MethodHandleTest.java
Print this page
rev 55127 : 8223351: [lworld] Primary mirror and nullable mirror for inline type
Reviewed-by: tbd
@@ -30,11 +30,11 @@
*/
import java.lang.invoke.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
-import java.util.*;
+import java.util.List;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
@@ -118,27 +118,27 @@
Object v = (Object)getter.invoke(array, i);
assertEquals(v, o);
}
Class<?> elementType = c.getComponentType();
- if (elementType.isValue()) {
- assertTrue(elementType == elementType.asValueType());
+ if (elementType.isInlineClass()) {
+ assertTrue(elementType == elementType.asPrimaryType());
}
// set an array element to null
try {
Object v = (Object)setter.invoke(array, 0, null);
- assertFalse(elementType.isValue(), "should fail to set an inline class array element to null");
+ assertFalse(elementType.isInlineClass(), "should fail to set an inline class array element to null");
} catch (NullPointerException e) {
- assertTrue(elementType.isValue(), "should only fail to set an inline class array element to null");
+ assertTrue(elementType.isInlineClass(), "should only fail to set an inline class array element to null");
}
}
@Test
public static void testNullableArray() throws Throwable {
Class<?> arrayClass = (new Point?[0]).getClass();
Class<?> elementType = arrayClass.getComponentType();
- assertTrue(elementType == Point.class.asBoxType());
+ assertTrue(elementType == Point.class.asNullableType(), arrayClass.getComponentType().toString());
MethodHandle setter = MethodHandles.arrayElementSetter(arrayClass);
MethodHandle getter = MethodHandles.arrayElementGetter(arrayClass);
MethodHandle ctor = MethodHandles.arrayConstructor(arrayClass);
Object[] array = (Object[]) ctor.invoke(2);
@@ -161,11 +161,11 @@
for (String name : names) {
Field f = c.getDeclaredField(name);
unreflectField(f);
findGetter(f);
varHandle(f);
- if (c.isValue())
+ if (c.isInlineClass())
ensureImmutable(f);
else
ensureNullable(f);
}
}
@@ -194,11 +194,11 @@
* The field must be flattenable but may or may not be flattened.
*/
void setValueField(String name, Object obj, Object value) throws Throwable {
Field f = c.getDeclaredField(name);
boolean isStatic = Modifier.isStatic(f.getModifiers());
- assertTrue(f.getType().isValue());
+ assertTrue(f.getType().isInlineClass());
assertTrue((isStatic && obj == null) || (!isStatic && obj != null));
Object v = f.get(obj);
// Field::set
try {
@@ -260,12 +260,11 @@
* Test setting the given field to null via reflection, method handle
* and var handle.
*/
void ensureNullable(Field f) throws Throwable {
assertFalse(Modifier.isStatic(f.getModifiers()));
- // flattenable implies non-nullable
- boolean canBeNull = !isFlattenable(f);
+ boolean canBeNull = f.getType().isNullableType();
// test reflection
try {
f.set(o, null);
assertTrue(canBeNull, f + " cannot be set to null");
} catch (NullPointerException e) {
@@ -313,11 +312,6 @@
}
boolean isFlattened(Field f) {
return (f.getModifiers() & 0x00008000) == 0x00008000;
}
-
- boolean isFlattenable(Field f) {
- return (f.getModifiers() & 0x00000100) == 0x00000100;
- }
-
}
< prev index next >