1.1 --- a/src/share/vm/oops/annotations.hpp Fri Feb 08 16:56:03 2013 -0800 1.2 +++ b/src/share/vm/oops/annotations.hpp Mon Feb 11 14:06:22 2013 -0500 1.3 @@ -49,38 +49,15 @@ 1.4 // Annotation objects (byte arrays) for fields, or null if no annotations. 1.5 // Indices correspond to entries (not indices) in fields array. 1.6 Array<AnnotationArray*>* _fields_annotations; 1.7 - // Annotation objects (byte arrays) for methods, or null if no annotations. 1.8 - // Index is the idnum, which is initially the same as the methods array index. 1.9 - Array<AnnotationArray*>* _methods_annotations; 1.10 - // Annotation objects (byte arrays) for methods' parameters, or null if no 1.11 - // such annotations. 1.12 - // Index is the idnum, which is initially the same as the methods array index. 1.13 - Array<AnnotationArray*>* _methods_parameter_annotations; 1.14 - // Annotation objects (byte arrays) for methods' default values, or null if no 1.15 - // such annotations. 1.16 - // Index is the idnum, which is initially the same as the methods array index. 1.17 - Array<AnnotationArray*>* _methods_default_annotations; 1.18 // Type annotations for this class, or null if none. 1.19 - Annotations* _type_annotations; 1.20 - 1.21 - // Constructor where some some values are known to not be null 1.22 - Annotations(Array<AnnotationArray*>* fa, Array<AnnotationArray*>* ma, 1.23 - Array<AnnotationArray*>* mpa, Array<AnnotationArray*>* mda) : 1.24 - _class_annotations(NULL), 1.25 - _fields_annotations(fa), 1.26 - _methods_annotations(ma), 1.27 - _methods_parameter_annotations(mpa), 1.28 - _methods_default_annotations(mda), 1.29 - _type_annotations(NULL) {} 1.30 + AnnotationArray* _class_type_annotations; 1.31 + Array<AnnotationArray*>* _fields_type_annotations; 1.32 1.33 public: 1.34 // Allocate instance of this class 1.35 static Annotations* allocate(ClassLoaderData* loader_data, TRAPS); 1.36 - static Annotations* allocate(ClassLoaderData* loader_data, 1.37 - Array<AnnotationArray*>* fa, 1.38 - Array<AnnotationArray*>* ma, 1.39 - Array<AnnotationArray*>* mpa, 1.40 - Array<AnnotationArray*>* mda, TRAPS); 1.41 + 1.42 + static void free_contents(ClassLoaderData* loader_data, Array<AnnotationArray*>* p); 1.43 void deallocate_contents(ClassLoaderData* loader_data); 1.44 DEBUG_ONLY(bool on_stack() { return false; }) // for template 1.45 1.46 @@ -93,61 +70,24 @@ 1.47 // Constructor to initialize to null 1.48 Annotations() : _class_annotations(NULL), 1.49 _fields_annotations(NULL), 1.50 - _methods_annotations(NULL), 1.51 - _methods_parameter_annotations(NULL), 1.52 - _methods_default_annotations(NULL), 1.53 - _type_annotations(NULL) {} 1.54 + _class_type_annotations(NULL), 1.55 + _fields_type_annotations(NULL) {} 1.56 1.57 AnnotationArray* class_annotations() const { return _class_annotations; } 1.58 Array<AnnotationArray*>* fields_annotations() const { return _fields_annotations; } 1.59 - Array<AnnotationArray*>* methods_annotations() const { return _methods_annotations; } 1.60 - Array<AnnotationArray*>* methods_parameter_annotations() const { return _methods_parameter_annotations; } 1.61 - Array<AnnotationArray*>* methods_default_annotations() const { return _methods_default_annotations; } 1.62 - Annotations* type_annotations() const { return _type_annotations; } 1.63 + AnnotationArray* class_type_annotations() const { return _class_type_annotations; } 1.64 + Array<AnnotationArray*>* fields_type_annotations() const { return _fields_type_annotations; } 1.65 1.66 void set_class_annotations(AnnotationArray* md) { _class_annotations = md; } 1.67 void set_fields_annotations(Array<AnnotationArray*>* md) { _fields_annotations = md; } 1.68 - void set_methods_annotations(Array<AnnotationArray*>* md) { _methods_annotations = md; } 1.69 - void set_methods_parameter_annotations(Array<AnnotationArray*>* md) { _methods_parameter_annotations = md; } 1.70 - void set_methods_default_annotations(Array<AnnotationArray*>* md) { _methods_default_annotations = md; } 1.71 - void set_type_annotations(Annotations* annos) { _type_annotations = annos; } 1.72 - 1.73 - // Redefine classes support 1.74 - AnnotationArray* get_method_annotations_of(int idnum) 1.75 - { return get_method_annotations_from(idnum, _methods_annotations); } 1.76 - 1.77 - AnnotationArray* get_method_parameter_annotations_of(int idnum) 1.78 - { return get_method_annotations_from(idnum, _methods_parameter_annotations); } 1.79 - AnnotationArray* get_method_default_annotations_of(int idnum) 1.80 - { return get_method_annotations_from(idnum, _methods_default_annotations); } 1.81 - 1.82 - 1.83 - void set_method_annotations_of(instanceKlassHandle ik, 1.84 - int idnum, AnnotationArray* anno, TRAPS) { 1.85 - set_methods_annotations_of(ik, idnum, anno, &_methods_annotations, THREAD); 1.86 - } 1.87 - 1.88 - void set_method_parameter_annotations_of(instanceKlassHandle ik, 1.89 - int idnum, AnnotationArray* anno, TRAPS) { 1.90 - set_methods_annotations_of(ik, idnum, anno, &_methods_parameter_annotations, THREAD); 1.91 - } 1.92 - 1.93 - void set_method_default_annotations_of(instanceKlassHandle ik, 1.94 - int idnum, AnnotationArray* anno, TRAPS) { 1.95 - set_methods_annotations_of(ik, idnum, anno, &_methods_default_annotations, THREAD); 1.96 - } 1.97 + void set_class_type_annotations(AnnotationArray* cta) { _class_type_annotations = cta; } 1.98 + void set_fields_type_annotations(Array<AnnotationArray*>* fta) { _fields_type_annotations = fta; } 1.99 1.100 // Turn metadata annotations into a Java heap object (oop) 1.101 static typeArrayOop make_java_array(AnnotationArray* annotations, TRAPS); 1.102 1.103 - inline AnnotationArray* get_method_annotations_from(int idnum, Array<AnnotationArray*>* annos); 1.104 - void set_annotations(Array<AnnotationArray*>* md, Array<AnnotationArray*>** md_p) { *md_p = md; } 1.105 - 1.106 bool is_klass() const { return false; } 1.107 private: 1.108 - void set_methods_annotations_of(instanceKlassHandle ik, 1.109 - int idnum, AnnotationArray* anno, 1.110 - Array<AnnotationArray*>** md_p, TRAPS); 1.111 static julong count_bytes(Array<AnnotationArray*>* p); 1.112 public: 1.113 const char* internal_name() const { return "{constant pool}"; } 1.114 @@ -156,13 +96,4 @@ 1.115 #endif 1.116 void print_value_on(outputStream* st) const; 1.117 }; 1.118 - 1.119 - 1.120 -// For method with idnum get the method's Annotations 1.121 -inline AnnotationArray* Annotations::get_method_annotations_from(int idnum, Array<AnnotationArray*>* annos) { 1.122 - if (annos == NULL || annos->length() <= idnum) { 1.123 - return NULL; 1.124 - } 1.125 - return annos->at(idnum); 1.126 -} 1.127 #endif // SHARE_VM_OOPS_ANNOTATIONS_HPP