607 annotationType.members().get(name)); 608 } 609 } 610 mv.put(name, value); 611 } 612 613 UnsafeAccessor.setType(this, t); 614 UnsafeAccessor.setMemberValues(this, mv); 615 } 616 617 private static class UnsafeAccessor { 618 private static final jdk.internal.misc.Unsafe unsafe 619 = jdk.internal.misc.Unsafe.getUnsafe(); 620 private static final long typeOffset = unsafe.objectFieldOffset 621 (AnnotationInvocationHandler.class, "type"); 622 private static final long memberValuesOffset = unsafe.objectFieldOffset 623 (AnnotationInvocationHandler.class, "memberValues"); 624 625 static void setType(AnnotationInvocationHandler o, 626 Class<? extends Annotation> type) { 627 unsafe.putObject(o, typeOffset, type); 628 } 629 630 static void setMemberValues(AnnotationInvocationHandler o, 631 Map<String, Object> memberValues) { 632 unsafe.putObject(o, memberValuesOffset, memberValues); 633 } 634 } 635 } | 607 annotationType.members().get(name)); 608 } 609 } 610 mv.put(name, value); 611 } 612 613 UnsafeAccessor.setType(this, t); 614 UnsafeAccessor.setMemberValues(this, mv); 615 } 616 617 private static class UnsafeAccessor { 618 private static final jdk.internal.misc.Unsafe unsafe 619 = jdk.internal.misc.Unsafe.getUnsafe(); 620 private static final long typeOffset = unsafe.objectFieldOffset 621 (AnnotationInvocationHandler.class, "type"); 622 private static final long memberValuesOffset = unsafe.objectFieldOffset 623 (AnnotationInvocationHandler.class, "memberValues"); 624 625 static void setType(AnnotationInvocationHandler o, 626 Class<? extends Annotation> type) { 627 unsafe.putReference(o, typeOffset, type); 628 } 629 630 static void setMemberValues(AnnotationInvocationHandler o, 631 Map<String, Object> memberValues) { 632 unsafe.putReference(o, memberValuesOffset, memberValues); 633 } 634 } 635 } |