< prev index next >

test/compiler/valhalla/valuetypes/ValueTypeTestBench.java

Print this page

        

*** 2603,2612 **** --- 2603,2690 ---- public void test93_verifier(boolean warmup) throws Throwable { long result = test93(); Asserts.assertEQ(result, 0L); } + // Test correctness of the Class::isAssignableFrom intrinsic + @Test() + public boolean test94(Class<?> supercls, Class<?> subcls) { + return supercls.isAssignableFrom(subcls); + } + + public void test94_verifier(boolean warmup) { + Asserts.assertTrue(test94(__Value.class, MyValue1.class), "test94_1 failed"); + Asserts.assertTrue(test94(MyValue1.class, MyValue1.class), "test94_2 failed"); + Asserts.assertTrue(test94(Object.class, java.util.ArrayList.class), "test94_3 failed"); + Asserts.assertTrue(test94(java.util.ArrayList.class, java.util.ArrayList.class), "test94_4 failed"); + Asserts.assertTrue(!test94(Object.class, MyValue1.class), "test94_5 failed"); + Asserts.assertTrue(!test94(__Value.class, java.util.ArrayList.class), "test94_6 failed"); + } + + // Verify that Class::isAssignableFrom checks with statically known classes are folded + @Test(failOn = LOADK) + public boolean test95() { + boolean check1 = java.util.AbstractList.class.isAssignableFrom(java.util.ArrayList.class); + boolean check2 = MyValue1.class.isAssignableFrom(MyValue1.class); + boolean check3 = Object.class.isAssignableFrom(java.util.ArrayList.class); + boolean check4 = java.lang.__Value.class.isAssignableFrom(MyValue1.class); + boolean check5 = !Object.class.isAssignableFrom(MyValue1.class); + boolean check6 = !MyValue1.class.isAssignableFrom(Object.class); + return check1 && check2 && check3 && check4 && check5 && check6; + } + + public void test95_verifier(boolean warmup) { + Asserts.assertTrue(test95(), "test95 failed"); + } + + // Test correctness of the Class::getSuperclass intrinsic + @Test() + public Class<?> test96(Class<?> cls) { + return cls.getSuperclass(); + } + + public void test96_verifier(boolean warmup) { + Asserts.assertTrue(test96(__Value.class) == null, "test94_1 failed"); + Asserts.assertTrue(test96(Object.class) == null, "test94_2 failed"); + Asserts.assertTrue(test96(MyValue1.class) == __Value.class, "test94_3 failed"); + Asserts.assertTrue(test96(Class.class) == Object.class, "test94_4 failed"); + } + + // Verify that Class::getSuperclass checks with statically known classes are folded + @Test(failOn = LOADK) + public boolean test97() { + boolean check1 = __Value.class.getSuperclass() == null; + boolean check2 = Object.class.getSuperclass() == null; + boolean check3 = MyValue1.class.getSuperclass() == __Value.class; + boolean check4 = Class.class.getSuperclass() == Object.class; + return check1 && check2 && check3 && check4; + } + + public void test97_verifier(boolean warmup) { + Asserts.assertTrue(test97(), "test97 failed"); + } + + // Test Class::cast intrinsic + @Test() + public Object test98(Class<?> cls, Object o) throws ClassCastException { + return cls.cast(o); + } + + public void test98_verifier(boolean warmup) { + try { + test98(ValueCapableClass1.class, vcc); + } catch (ClassCastException e) { + throw new RuntimeException("test98_1 failed"); + } + try { + test98(__Value.class, new Object()); + throw new RuntimeException("test98_2 failed"); + } catch (ClassCastException e) { + // Expected + } + } + // ========== Test infrastructure ========== private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox(); private static final int ValueTypePassFieldsAsArgsOn = 0x1; private static final int ValueTypePassFieldsAsArgsOff = 0x2;
*** 2632,2641 **** --- 2710,2720 ---- private static final String END = ")|"; private static final String ALLOC = "(.*precise klass compiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_instance_Java" + END; private static final String ALLOCA = "(.*precise klass \\[Qcompiler/valhalla/valuetypes/MyValue.*\\R(.*(nop|spill).*\\R)*.*_new_array_Java" + END; private static final String LOAD = START + "Load(B|S|I|L|F|D)" + MID + "valuetype\\*" + END; private static final String LOADP = START + "Load(P|N)" + MID + "valuetype\\*" + END; + private static final String LOADK = START + "LoadK" + MID + END; private static final String STORE = START + "Store(B|S|I|L|F|D)" + MID + "valuetype\\*" + END; private static final String STOREP = START + "Store(P|N)" + MID + "valuetype\\*" + END; private static final String LOOP = START + "Loop" + MID + "" + END; private static final String TRAP = START + "CallStaticJava" + MID + "uncommon_trap.*(unstable_if|predicate)" + END; private static final String RETURN = START + "Return" + MID + "returns" + END;
< prev index next >