104 105 public void test3_verifier(boolean warmup) { 106 Asserts.assertTrue(test3(Object.class) == null, "test3_1 failed"); 107 Asserts.assertTrue(test3(MyValue1.class) == Object.class, "test3_2 failed"); 108 Asserts.assertTrue(test3(Class.class) == Object.class, "test3_3 failed"); 109 } 110 111 // Verify that Class::getSuperclass checks with statically known classes are folded 112 @Test(failOn = LOADK) 113 public boolean test4() { 114 boolean check1 = Object.class.getSuperclass() == null; 115 boolean check2 = MyValue1.class.getSuperclass() == Object.class; 116 boolean check3 = Class.class.getSuperclass() == Object.class; 117 return check1 && check2 && check3; 118 } 119 120 public void test4_verifier(boolean warmup) { 121 Asserts.assertTrue(test4(), "test4 failed"); 122 } 123 124 // TODO re-enable once Object method support is implemented 125 /* 126 // Test toString() method 127 @Test(failOn = ALLOC + STORE + LOAD) 128 public String test5(MyValue1 v) { 129 return v.toString(); 130 } 131 132 @DontCompile 133 public void test5_verifier(boolean warmup) { 134 MyValue1 v = MyValue1.createDefaultInline(); 135 test5(v); 136 } 137 */ 138 139 // Test hashCode() method 140 // @Test() 141 // public int test6(MyValue1 v) { 142 // return v.hashCode(); 143 // } 144 145 // @DontCompile 146 // public void test6_verifier(boolean warmup) { 147 // MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 148 // int res = test6(v); 149 // Asserts.assertEQ(res, v.hashCode()); 150 // } 151 152 // Test default value type array creation via reflection 153 @Test() 154 public void test7(Class<?> componentType, int len, long hash) { 155 Object[] va = (Object[])Array.newInstance(componentType, len); 156 for (int i = 0; i < len; ++i) { 157 Asserts.assertEQ(((MyValue1)va[i]).hashPrimitive(), hash); 158 } 159 } 160 161 @DontCompile 162 public void test7_verifier(boolean warmup) { 163 int len = Math.abs(rI) % 42; 164 long hash = MyValue1.createDefaultDontInline().hashPrimitive(); 165 test7(MyValue1.class, len, hash); 166 } 167 168 // Class.isInstance 169 @Test() 170 public boolean test8(Class c, MyValue1 vt) { 245 } 246 } 247 248 // value type array creation via reflection 249 @Test() 250 public void test14(int len, long hash) { 251 Object[] va = (Object[])Array.newInstance(MyValue1.class, len); 252 for (int i = 0; i < len; ++i) { 253 Asserts.assertEQ(((MyValue1)va[i]).hashPrimitive(), hash); 254 } 255 } 256 257 @DontCompile 258 public void test14_verifier(boolean warmup) { 259 int len = Math.abs(rI) % 42; 260 long hash = MyValue1.createDefaultDontInline().hashPrimitive(); 261 test14(len, hash); 262 } 263 264 // Test hashCode() method 265 // @Test() 266 // public int test15(Object v) { 267 // return v.hashCode(); 268 // } 269 270 // @DontCompile 271 // public void test15_verifier(boolean warmup) { 272 // MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 273 // int res = test15(v); 274 // Asserts.assertEQ(res, v.hashCode()); 275 // } 276 277 @Test() 278 public int test16(Object v) { 279 return System.identityHashCode(v); 280 } 281 282 @DontCompile 283 public void test16_verifier(boolean warmup) { 284 MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 285 int res = test16(v); 286 Asserts.assertEQ(res, System.identityHashCode((Object)v)); 287 } 288 289 @Test() 290 public int test17(Object v) { 291 return System.identityHashCode(v); 292 } 293 294 @DontCompile 295 public void test17_verifier(boolean warmup) { 296 Integer v = new Integer(rI); 297 int res = test17(v); 298 Asserts.assertEQ(res, System.identityHashCode(v)); 299 } 300 301 @Test() 302 public int test18(Object v) { 303 return System.identityHashCode(v); 304 } 305 306 @DontCompile 307 public void test18_verifier(boolean warmup) { 308 Object v = null; 309 int res = test18(v); 310 Asserts.assertEQ(res, System.identityHashCode(v)); 311 } 312 } | 104 105 public void test3_verifier(boolean warmup) { 106 Asserts.assertTrue(test3(Object.class) == null, "test3_1 failed"); 107 Asserts.assertTrue(test3(MyValue1.class) == Object.class, "test3_2 failed"); 108 Asserts.assertTrue(test3(Class.class) == Object.class, "test3_3 failed"); 109 } 110 111 // Verify that Class::getSuperclass checks with statically known classes are folded 112 @Test(failOn = LOADK) 113 public boolean test4() { 114 boolean check1 = Object.class.getSuperclass() == null; 115 boolean check2 = MyValue1.class.getSuperclass() == Object.class; 116 boolean check3 = Class.class.getSuperclass() == Object.class; 117 return check1 && check2 && check3; 118 } 119 120 public void test4_verifier(boolean warmup) { 121 Asserts.assertTrue(test4(), "test4 failed"); 122 } 123 124 // Disabled until 8206274 is fixed 125 /* 126 // Test toString() method 127 @Test(failOn = ALLOC + STORE + LOAD) 128 public String test5(MyValue1 v) { 129 return v.toString(); 130 } 131 132 @DontCompile 133 public void test5_verifier(boolean warmup) { 134 MyValue1 v = MyValue1.createDefaultInline(); 135 test5(v); 136 } 137 */ 138 139 // Test hashCode() method 140 @Test() 141 public int test6(MyValue1 v) { 142 return v.hashCode(); 143 } 144 145 @DontCompile 146 public void test6_verifier(boolean warmup) { 147 MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 148 int res = test6(v); 149 Asserts.assertEQ(res, v.hashCode()); 150 } 151 152 // Test default value type array creation via reflection 153 @Test() 154 public void test7(Class<?> componentType, int len, long hash) { 155 Object[] va = (Object[])Array.newInstance(componentType, len); 156 for (int i = 0; i < len; ++i) { 157 Asserts.assertEQ(((MyValue1)va[i]).hashPrimitive(), hash); 158 } 159 } 160 161 @DontCompile 162 public void test7_verifier(boolean warmup) { 163 int len = Math.abs(rI) % 42; 164 long hash = MyValue1.createDefaultDontInline().hashPrimitive(); 165 test7(MyValue1.class, len, hash); 166 } 167 168 // Class.isInstance 169 @Test() 170 public boolean test8(Class c, MyValue1 vt) { 245 } 246 } 247 248 // value type array creation via reflection 249 @Test() 250 public void test14(int len, long hash) { 251 Object[] va = (Object[])Array.newInstance(MyValue1.class, len); 252 for (int i = 0; i < len; ++i) { 253 Asserts.assertEQ(((MyValue1)va[i]).hashPrimitive(), hash); 254 } 255 } 256 257 @DontCompile 258 public void test14_verifier(boolean warmup) { 259 int len = Math.abs(rI) % 42; 260 long hash = MyValue1.createDefaultDontInline().hashPrimitive(); 261 test14(len, hash); 262 } 263 264 // Test hashCode() method 265 @Test() 266 public int test15(Object v) { 267 return v.hashCode(); 268 } 269 270 @DontCompile 271 public void test15_verifier(boolean warmup) { 272 MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 273 int res = test15(v); 274 Asserts.assertEQ(res, v.hashCode()); 275 } 276 277 @Test() 278 public int test16(Object v) { 279 return System.identityHashCode(v); 280 } 281 282 @DontCompile 283 public void test16_verifier(boolean warmup) { 284 MyValue1 v = MyValue1.createWithFieldsInline(rI, rL); 285 int res = test16(v); 286 Asserts.assertEQ(res, System.identityHashCode((Object)v)); 287 } 288 289 @Test() 290 public int test17(Object v) { 291 return System.identityHashCode(v); 292 } 293 294 @DontCompile 295 public void test17_verifier(boolean warmup) { 296 Integer v = new Integer(rI); 297 int res = test17(v); 298 Asserts.assertEQ(res, System.identityHashCode(v)); 299 } 300 301 @Test() 302 public int test18(Object v) { 303 return System.identityHashCode(v); 304 } 305 306 @DontCompile 307 public void test18_verifier(boolean warmup) { 308 Object v = null; 309 int res = test18(v); 310 Asserts.assertEQ(res, System.identityHashCode(v)); 311 } 312 313 // hashCode() and toString() with different value types 314 @Test() 315 public int test19(MyValue1 vt1, MyValue1 vt2, boolean b) { 316 MyValue1 res = b ? vt1 : vt2; 317 return res.hashCode(); 318 } 319 320 @DontCompile 321 public void test19_verifier(boolean warmup) { 322 MyValue1 vt = MyValue1.createWithFieldsInline(rI, rL); 323 int res = test19(vt, vt, true); 324 Asserts.assertEQ(res, vt.hashCode()); 325 res = test19(vt, vt, false); 326 Asserts.assertEQ(res, vt.hashCode()); 327 } 328 329 @Test() 330 public String test20(MyValue1 vt1, MyValue1 vt2, boolean b) { 331 MyValue1 res = b ? vt1 : vt2; 332 return res.toString(); 333 } 334 335 @DontCompile 336 public void test20_verifier(boolean warmup) { 337 MyValue1 vt = MyValue1.createWithFieldsInline(rI, rL); 338 String res = test20(vt, vt, true); 339 Asserts.assertEQ(res, vt.toString()); 340 res = test20(vt, vt, false); 341 Asserts.assertEQ(res, vt.toString()); 342 } 343 } |