From 72449f0121a743e3423e978332c0edf30961da41 Mon Sep 17 00:00:00 2001 From: darcy Date: Tue, 18 Dec 2012 14:49:39 -0800 Subject: [PATCH] 8004699: Add type annotation storage to Constructor, Field and Method Reviewed-by: darcy, dholmes Contributed-by: joel.franck@oracle.com --- src/share/classes/java/lang/reflect/Constructor.java | 4 ++++ src/share/classes/java/lang/reflect/Field.java | 4 ++++ src/share/classes/java/lang/reflect/Method.java | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/share/classes/java/lang/reflect/Constructor.java b/src/share/classes/java/lang/reflect/Constructor.java index 49e9c5ef9..186fc3711 100644 --- a/src/share/classes/java/lang/reflect/Constructor.java +++ b/src/share/classes/java/lang/reflect/Constructor.java @@ -66,6 +66,8 @@ public final class Constructor extends Executable { private transient ConstructorRepository genericInfo; private byte[] annotations; private byte[] parameterAnnotations; + // This is set by the vm at Constructor creation + private byte[] typeAnnotations; // Generics infrastructure // Accessor for factory @@ -138,6 +140,8 @@ public final class Constructor extends Executable { res.root = this; // Might as well eagerly propagate this if already present res.constructorAccessor = constructorAccessor; + + res.typeAnnotations = typeAnnotations; return res; } diff --git a/src/share/classes/java/lang/reflect/Field.java b/src/share/classes/java/lang/reflect/Field.java index ded3689c4..e54714595 100644 --- a/src/share/classes/java/lang/reflect/Field.java +++ b/src/share/classes/java/lang/reflect/Field.java @@ -80,6 +80,8 @@ class Field extends AccessibleObject implements Member { // currently only two levels deep (i.e., one root Field and // potentially many Field objects pointing to it.) private Field root; + // This is set by the vm at Field creation + private byte[] typeAnnotations; // Generics infrastructure @@ -144,6 +146,8 @@ class Field extends AccessibleObject implements Member { // Might as well eagerly propagate this if already present res.fieldAccessor = fieldAccessor; res.overrideFieldAccessor = overrideFieldAccessor; + + res.typeAnnotations = typeAnnotations; return res; } diff --git a/src/share/classes/java/lang/reflect/Method.java b/src/share/classes/java/lang/reflect/Method.java index 8d349bd21..e37be73c9 100644 --- a/src/share/classes/java/lang/reflect/Method.java +++ b/src/share/classes/java/lang/reflect/Method.java @@ -79,7 +79,8 @@ public final class Method extends Executable { // currently only two levels deep (i.e., one root Method and // potentially many Method objects pointing to it.) private Method root; - + // This is set by the vm at Method creation + private byte[] typeAnnotations; // Generics infrastructure private String getGenericSignature() {return signature;} @@ -150,6 +151,8 @@ public final class Method extends Executable { res.root = this; // Might as well eagerly propagate this if already present res.methodAccessor = methodAccessor; + + res.typeAnnotations = typeAnnotations; return res; } -- GitLab