488 Asserts.assertEQ(va[i].x, rI + 1); 489 } 490 } 491 492 // clone() as stub call 493 @Test 494 public MyValue1?[] test18(MyValue1?[] va) { 495 return va.clone(); 496 } 497 498 @DontCompile 499 public void test18_verifier(boolean warmup) { 500 int len = Math.abs(rI) % 10; 501 MyValue1?[] va1 = new MyValue1?[len]; 502 MyValue1[] va2 = new MyValue1[len]; 503 for (int i = 1; i < len; ++i) { 504 va1[i] = testValue1; 505 va2[i] = testValue1; 506 } 507 MyValue1?[] result1 = test18(va1); 508 MyValue1?[] result2 = test18(va2); 509 if (len > 0) { 510 Asserts.assertEQ(result1[0], null); 511 Asserts.assertEQ(result2[0].hash(), va2[0].hash()); 512 } 513 for (int i = 1; i < len; ++i) { 514 Asserts.assertEQ(result1[i].hash(), va1[i].hash()); 515 Asserts.assertEQ(result2[i].hash(), va2[i].hash()); 516 } 517 } 518 519 // clone() as series of loads/stores 520 static MyValue1?[] test19_orig = null; 521 522 @Test 523 public MyValue1?[] test19() { 524 MyValue1?[] va = new MyValue1?[8]; 525 for (int i = 1; i < va.length; ++i) { 526 va[i] = MyValue1.createWithFieldsInline(rI, rL); 527 } 528 test19_orig = va; 529 530 return va.clone(); 531 } 532 533 @DontCompile 534 public void test19_verifier(boolean warmup) { 535 MyValue1?[] result = test19(); 536 Asserts.assertEQ(result[0], null); 537 for (int i = 1; i < test19_orig.length; ++i) { | 488 Asserts.assertEQ(va[i].x, rI + 1); 489 } 490 } 491 492 // clone() as stub call 493 @Test 494 public MyValue1?[] test18(MyValue1?[] va) { 495 return va.clone(); 496 } 497 498 @DontCompile 499 public void test18_verifier(boolean warmup) { 500 int len = Math.abs(rI) % 10; 501 MyValue1?[] va1 = new MyValue1?[len]; 502 MyValue1[] va2 = new MyValue1[len]; 503 for (int i = 1; i < len; ++i) { 504 va1[i] = testValue1; 505 va2[i] = testValue1; 506 } 507 MyValue1?[] result1 = test18(va1); 508 if (len > 0) { 509 Asserts.assertEQ(result1[0], null); 510 } 511 for (int i = 1; i < len; ++i) { 512 Asserts.assertEQ(result1[i].hash(), va1[i].hash()); 513 } 514 // make sure we do deopt: GraphKit::new_array assumes an 515 // array of references 516 for (int j = 0; j < 10; j++) { 517 MyValue1?[] result2 = test18(va2); 518 519 for (int i = 0; i < len; ++i) { 520 Asserts.assertEQ(result2[i].hash(), va2[i].hash()); 521 } 522 } 523 if (compile_and_run_again_if_deoptimized(warmup, "TestNullableArrays::test18")) { 524 MyValue1?[] result2 = test18(va2); 525 for (int i = 0; i < len; ++i) { 526 Asserts.assertEQ(result2[i].hash(), va2[i].hash()); 527 } 528 } 529 } 530 531 // clone() as series of loads/stores 532 static MyValue1?[] test19_orig = null; 533 534 @Test 535 public MyValue1?[] test19() { 536 MyValue1?[] va = new MyValue1?[8]; 537 for (int i = 1; i < va.length; ++i) { 538 va[i] = MyValue1.createWithFieldsInline(rI, rL); 539 } 540 test19_orig = va; 541 542 return va.clone(); 543 } 544 545 @DontCompile 546 public void test19_verifier(boolean warmup) { 547 MyValue1?[] result = test19(); 548 Asserts.assertEQ(result[0], null); 549 for (int i = 1; i < test19_orig.length; ++i) { |