< prev index next >

src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java

Print this page




 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 }
< prev index next >