diff --git a/src/share/classes/java/lang/reflect/Constructor.java b/src/share/classes/java/lang/reflect/Constructor.java index 49e9c5ef90b0117676eb9f93d23694419d6fbe03..186fc3711197e8bd6723afa86750d688bdc5f50b 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 ded3689c419672424a126b483ee0c4fb96dd4e3a..e54714595864a7fa275fe6bc2f3a8616ac7fe9b7 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 8d349bd21ccae35711d07ba06a5a7f1123c75fb6..e37be73c90a1c6e3487a0acc67b61e142e597d2a 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; }