416 return desc;
417 }
418 }
419
420 static class VarHandleAccessTestCase extends AccessTestCase<VarHandle> {
421 final VarHandle vh;
422
423 VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata) {
424 this(desc, vh, ata, true);
425 }
426
427 VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata, boolean loop) {
428 super("VarHandle -> " + desc, ata, loop);
429 this.vh = vh;
430 }
431
432 @Override
433 VarHandle get() {
434 return vh;
435 }
436 }
437
438 static class MethodHandleAccessTestCase extends AccessTestCase<Handles> {
439 final VarHandle vh;
440 final VarHandleToMethodHandle f;
441
442 MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata) {
443 this(desc, vh, f, ata, true);
444 }
445
446 MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata, boolean loop) {
447 super("VarHandle -> " + f.toString() + " -> " + desc, ata, loop);
448 this.vh = vh;
449 this.f = f;
450 }
451
452 @Override
453 Handles get() throws Exception {
454 return new Handles(vh, f);
455 }
456 }
457
458 static void testTypes(VarHandle vh) {
459 List<Class<?>> pts = vh.coordinateTypes();
460
461 for (TestAccessMode accessMode : testAccessModes()) {
462 MethodType amt = vh.accessModeType(accessMode.toAccessMode());
463
464 assertEquals(pts, amt.parameterList().subList(0, pts.size()));
465 }
466
467 for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET)) {
468 MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
469 assertEquals(vh.varType(), mt.returnType());
470 assertEquals(pts, mt.parameterList());
471 }
472
473 for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.SET)) {
474 MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
475 assertEquals(void.class, mt.returnType());
|
416 return desc;
417 }
418 }
419
420 static class VarHandleAccessTestCase extends AccessTestCase<VarHandle> {
421 final VarHandle vh;
422
423 VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata) {
424 this(desc, vh, ata, true);
425 }
426
427 VarHandleAccessTestCase(String desc, VarHandle vh, AccessTestAction<VarHandle> ata, boolean loop) {
428 super("VarHandle -> " + desc, ata, loop);
429 this.vh = vh;
430 }
431
432 @Override
433 VarHandle get() {
434 return vh;
435 }
436
437 public String toString() {
438 return super.toString() + ", vh:" + vh;
439 }
440 }
441
442 static class MethodHandleAccessTestCase extends AccessTestCase<Handles> {
443 final VarHandle vh;
444 final VarHandleToMethodHandle f;
445
446 MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata) {
447 this(desc, vh, f, ata, true);
448 }
449
450 MethodHandleAccessTestCase(String desc, VarHandle vh, VarHandleToMethodHandle f, AccessTestAction<Handles> ata, boolean loop) {
451 super("VarHandle -> " + f.toString() + " -> " + desc, ata, loop);
452 this.vh = vh;
453 this.f = f;
454 }
455
456 @Override
457 Handles get() throws Exception {
458 return new Handles(vh, f);
459 }
460
461 public String toString() {
462 return super.toString() + ", vh:" + vh + ", f: " + f;
463 }
464 }
465
466 static void testTypes(VarHandle vh) {
467 List<Class<?>> pts = vh.coordinateTypes();
468
469 for (TestAccessMode accessMode : testAccessModes()) {
470 MethodType amt = vh.accessModeType(accessMode.toAccessMode());
471
472 assertEquals(pts, amt.parameterList().subList(0, pts.size()));
473 }
474
475 for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.GET)) {
476 MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
477 assertEquals(vh.varType(), mt.returnType());
478 assertEquals(pts, mt.parameterList());
479 }
480
481 for (TestAccessMode testAccessMode : testAccessModesOfType(TestAccessType.SET)) {
482 MethodType mt = vh.accessModeType(testAccessMode.toAccessMode());
483 assertEquals(void.class, mt.returnType());
|