Mercurial > hg > graal-compiler
comparison src/share/vm/oops/method.hpp @ 8031:927a311d00f9
8007320: NPG: move method annotations
Summary: allocate method annotations and attach to ConstMethod if present
Reviewed-by: dcubed, jiangli, sspitsyn, iklam
author | coleenp |
---|---|
date | Mon, 11 Feb 2013 14:06:22 -0500 |
parents | 461a3adac4d1 |
children | 56c364daccc3 |
comparison
equal
deleted
inserted
replaced
8030:f989aff6946f | 8031:927a311d00f9 |
---|---|
99 class CheckedExceptionElement; | 99 class CheckedExceptionElement; |
100 class LocalVariableTableElement; | 100 class LocalVariableTableElement; |
101 class AdapterHandlerEntry; | 101 class AdapterHandlerEntry; |
102 class MethodData; | 102 class MethodData; |
103 class ConstMethod; | 103 class ConstMethod; |
104 class InlineTableSizes; | |
104 class KlassSizeStats; | 105 class KlassSizeStats; |
105 | 106 |
106 class Method : public Metadata { | 107 class Method : public Metadata { |
107 friend class VMStructs; | 108 friend class VMStructs; |
108 private: | 109 private: |
155 public: | 156 public: |
156 | 157 |
157 static Method* allocate(ClassLoaderData* loader_data, | 158 static Method* allocate(ClassLoaderData* loader_data, |
158 int byte_code_size, | 159 int byte_code_size, |
159 AccessFlags access_flags, | 160 AccessFlags access_flags, |
160 int compressed_line_number_size, | 161 InlineTableSizes* sizes, |
161 int localvariable_table_length, | |
162 int exception_table_length, | |
163 int checked_exceptions_length, | |
164 int method_parameters_length, | |
165 u2 generic_signature_index, | |
166 ConstMethod::MethodType method_type, | 162 ConstMethod::MethodType method_type, |
167 TRAPS); | 163 TRAPS); |
168 | 164 |
169 // CDS and vtbl checking can create an empty Method to get vtbl pointer. | 165 // CDS and vtbl checking can create an empty Method to get vtbl pointer. |
170 Method(){} | 166 Method(){} |
205 int generic_signature_index() const { return constMethod()->generic_signature_index(); } | 201 int generic_signature_index() const { return constMethod()->generic_signature_index(); } |
206 void set_generic_signature_index(int index) { constMethod()->set_generic_signature_index(index); } | 202 void set_generic_signature_index(int index) { constMethod()->set_generic_signature_index(index); } |
207 | 203 |
208 // annotations support | 204 // annotations support |
209 AnnotationArray* annotations() const { | 205 AnnotationArray* annotations() const { |
210 InstanceKlass* ik = method_holder(); | 206 return constMethod()->method_annotations(); |
211 if (ik->annotations() == NULL) { | |
212 return NULL; | |
213 } | |
214 return ik->annotations()->get_method_annotations_of(method_idnum()); | |
215 } | 207 } |
216 AnnotationArray* parameter_annotations() const { | 208 AnnotationArray* parameter_annotations() const { |
217 InstanceKlass* ik = method_holder(); | 209 return constMethod()->parameter_annotations(); |
218 if (ik->annotations() == NULL) { | |
219 return NULL; | |
220 } | |
221 return ik->annotations()->get_method_parameter_annotations_of(method_idnum()); | |
222 } | 210 } |
223 AnnotationArray* annotation_default() const { | 211 AnnotationArray* annotation_default() const { |
224 InstanceKlass* ik = method_holder(); | 212 return constMethod()->default_annotations(); |
225 if (ik->annotations() == NULL) { | 213 } |
226 return NULL; | 214 AnnotationArray* type_annotations() const { |
227 } | 215 return constMethod()->type_annotations(); |
228 return ik->annotations()->get_method_default_annotations_of(method_idnum()); | 216 } |
229 } | |
230 AnnotationArray* type_annotations() const { | |
231 InstanceKlass* ik = method_holder(); | |
232 Annotations* type_annos = ik->type_annotations(); | |
233 if (type_annos == NULL) | |
234 return NULL; | |
235 return type_annos->get_method_annotations_of(method_idnum()); | |
236 } | |
237 | 217 |
238 #ifdef CC_INTERP | 218 #ifdef CC_INTERP |
239 void set_result_index(BasicType type); | 219 void set_result_index(BasicType type); |
240 int result_index() { return _result_index; } | 220 int result_index() { return _result_index; } |
241 #endif | 221 #endif |
437 | 417 |
438 // interpreter entry | 418 // interpreter entry |
439 address interpreter_entry() const { return _i2i_entry; } | 419 address interpreter_entry() const { return _i2i_entry; } |
440 // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry | 420 // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry |
441 void set_interpreter_entry(address entry) { _i2i_entry = entry; _from_interpreted_entry = entry; } | 421 void set_interpreter_entry(address entry) { _i2i_entry = entry; _from_interpreted_entry = entry; } |
442 int interpreter_kind(void) { | |
443 return constMethod()->interpreter_kind(); | |
444 } | |
445 void set_interpreter_kind(); | |
446 void set_interpreter_kind(int kind) { | |
447 constMethod()->set_interpreter_kind(kind); | |
448 } | |
449 | 422 |
450 // native function (used for native methods only) | 423 // native function (used for native methods only) |
451 enum { | 424 enum { |
452 native_bind_event_is_interesting = true | 425 native_bind_event_is_interesting = true |
453 }; | 426 }; |
806 #else | 779 #else |
807 void print_name(outputStream* st = tty) PRODUCT_RETURN; // prints as "virtual void foo(int)" | 780 void print_name(outputStream* st = tty) PRODUCT_RETURN; // prints as "virtual void foo(int)" |
808 #endif | 781 #endif |
809 | 782 |
810 // Helper routine used for method sorting | 783 // Helper routine used for method sorting |
811 static void sort_methods(Array<Method*>* methods, | 784 static void sort_methods(Array<Method*>* methods, bool idempotent = false); |
812 Array<AnnotationArray*>* methods_annotations, | |
813 Array<AnnotationArray*>* methods_parameter_annotations, | |
814 Array<AnnotationArray*>* methods_default_annotations, | |
815 Array<AnnotationArray*>* methods_type_annotations, | |
816 bool idempotent = false); | |
817 | 785 |
818 // Deallocation function for redefine classes or if an error occurs | 786 // Deallocation function for redefine classes or if an error occurs |
819 void deallocate_contents(ClassLoaderData* loader_data); | 787 void deallocate_contents(ClassLoaderData* loader_data); |
820 | 788 |
821 // Printing | 789 // Printing |