< prev index next >

test/hotspot/jtreg/compiler/valhalla/valuetypes/TestLWorld.java

Print this page

        

@@ -2349,6 +2349,43 @@
         array[2] = 0x42;
         array[3] = 0x42;
         int result = test94(array);
         Asserts.assertEquals(result, 0x42 * 2);
     }
+
+    // Test that no code for clearing the array klass property bits is emitted for acmp
+    // because when loading the klass, we already know that the operand is a value type.
+    @Warmup(10000)
+    @Test(failOn = STORAGE_PROPERTY_CLEARING)
+    public boolean test95(Object o1, Object o2) {
+        return o1 == o2;
+    }
+
+    @DontCompile
+    public void test95_verifier(boolean warmup) {
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Asserts.assertTrue(test95(o1, o1));
+        Asserts.assertTrue(test95(null, null));
+        Asserts.assertFalse(test95(o1, null));
+        Asserts.assertFalse(test95(o1, o2));
+    }
+
+    // Same as test95 but operands are never null
+    @Warmup(10000)
+    @Test(failOn = STORAGE_PROPERTY_CLEARING)
+    public boolean test96(Object o1, Object o2) {
+        return o1 == o2;
+    }
+
+    @DontCompile
+    public void test96_verifier(boolean warmup) {
+        Object o1 = new Object();
+        Object o2 = new Object();
+        Asserts.assertTrue(test96(o1, o1));
+        Asserts.assertFalse(test96(o1, o2));
+        if (!warmup) {
+            Asserts.assertTrue(test96(null, null));
+            Asserts.assertFalse(test96(o1, null));
+        }
+    }
 }
< prev index next >