267 |
267 |
268 NOT_PRODUCT(int _verify_count;) // to avoid redundant verifies |
268 NOT_PRODUCT(int _verify_count;) // to avoid redundant verifies |
269 |
269 |
270 // Method array. |
270 // Method array. |
271 Array<Method*>* _methods; |
271 Array<Method*>* _methods; |
|
272 // Default Method Array, concrete methods inherited from interfaces |
|
273 Array<Method*>* _default_methods; |
272 // Interface (Klass*s) this class declares locally to implement. |
274 // Interface (Klass*s) this class declares locally to implement. |
273 Array<Klass*>* _local_interfaces; |
275 Array<Klass*>* _local_interfaces; |
274 // Interface (Klass*s) this class implements transitively. |
276 // Interface (Klass*s) this class implements transitively. |
275 Array<Klass*>* _transitive_interfaces; |
277 Array<Klass*>* _transitive_interfaces; |
276 // Int array containing the original order of method in the class file (for JVMTI). |
278 // Int array containing the original order of method in the class file (for JVMTI). |
277 Array<int>* _method_ordering; |
279 Array<int>* _method_ordering; |
|
280 // Int array containing the vtable_indices for default_methods |
|
281 // offset matches _default_methods offset |
|
282 Array<int>* _default_vtable_indices; |
|
283 |
278 // Instance and static variable information, starts with 6-tuples of shorts |
284 // Instance and static variable information, starts with 6-tuples of shorts |
279 // [access, name index, sig index, initval index, low_offset, high_offset] |
285 // [access, name index, sig index, initval index, low_offset, high_offset] |
280 // for all fields, followed by the generic signature data at the end of |
286 // for all fields, followed by the generic signature data at the end of |
281 // the array. Only fields with generic signature attributes have the generic |
287 // the array. Only fields with generic signature attributes have the generic |
282 // signature data set in the array. The fields array looks like following: |
288 // signature data set in the array. The fields array looks like following: |
354 // method ordering |
360 // method ordering |
355 Array<int>* method_ordering() const { return _method_ordering; } |
361 Array<int>* method_ordering() const { return _method_ordering; } |
356 void set_method_ordering(Array<int>* m) { _method_ordering = m; } |
362 void set_method_ordering(Array<int>* m) { _method_ordering = m; } |
357 void copy_method_ordering(intArray* m, TRAPS); |
363 void copy_method_ordering(intArray* m, TRAPS); |
358 |
364 |
|
365 // default_methods |
|
366 Array<Method*>* default_methods() const { return _default_methods; } |
|
367 void set_default_methods(Array<Method*>* a) { _default_methods = a; } |
|
368 |
|
369 // default method vtable_indices |
|
370 Array<int>* default_vtable_indices() const { return _default_vtable_indices; } |
|
371 void set_default_vtable_indices(Array<int>* v) { _default_vtable_indices = v; } |
|
372 Array<int>* create_new_default_vtable_indices(int len, TRAPS); |
|
373 |
359 // interfaces |
374 // interfaces |
360 Array<Klass*>* local_interfaces() const { return _local_interfaces; } |
375 Array<Klass*>* local_interfaces() const { return _local_interfaces; } |
361 void set_local_interfaces(Array<Klass*>* a) { |
376 void set_local_interfaces(Array<Klass*>* a) { |
362 guarantee(_local_interfaces == NULL || a == NULL, "Just checking"); |
377 guarantee(_local_interfaces == NULL || a == NULL, "Just checking"); |
363 _local_interfaces = a; } |
378 _local_interfaces = a; } |
499 |
514 |
500 // find a local method (returns NULL if not found) |
515 // find a local method (returns NULL if not found) |
501 Method* find_method(Symbol* name, Symbol* signature) const; |
516 Method* find_method(Symbol* name, Symbol* signature) const; |
502 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); |
517 static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature); |
503 |
518 |
|
519 // find a local method index in default_methods (returns -1 if not found) |
|
520 static int find_method_index(Array<Method*>* methods, Symbol* name, Symbol* signature); |
|
521 |
504 // lookup operation (returns NULL if not found) |
522 // lookup operation (returns NULL if not found) |
505 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; |
523 Method* uncached_lookup_method(Symbol* name, Symbol* signature) const; |
506 |
524 |
507 // lookup a method in all the interfaces that this class implements |
525 // lookup a method in all the interfaces that this class implements |
508 // (returns NULL if not found) |
526 // (returns NULL if not found) |
509 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; |
527 Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const; |
|
528 // lookup a method in local defaults then in all interfaces |
|
529 // (returns NULL if not found) |
|
530 Method* lookup_method_in_ordered_interfaces(Symbol* name, Symbol* signature) const; |
510 |
531 |
511 // Find method indices by name. If a method with the specified name is |
532 // Find method indices by name. If a method with the specified name is |
512 // found the index to the first method is returned, and 'end' is filled in |
533 // found the index to the first method is returned, and 'end' is filled in |
513 // with the index of first non-name-matching method. If no method is found |
534 // with the index of first non-name-matching method. If no method is found |
514 // -1 is returned. |
535 // -1 is returned. |
907 // Java vtable/itable |
928 // Java vtable/itable |
908 klassVtable* vtable() const; // return new klassVtable wrapper |
929 klassVtable* vtable() const; // return new klassVtable wrapper |
909 inline Method* method_at_vtable(int index); |
930 inline Method* method_at_vtable(int index); |
910 klassItable* itable() const; // return new klassItable wrapper |
931 klassItable* itable() const; // return new klassItable wrapper |
911 Method* method_at_itable(Klass* holder, int index, TRAPS); |
932 Method* method_at_itable(Klass* holder, int index, TRAPS); |
|
933 |
|
934 #if INCLUDE_JVMTI |
|
935 void adjust_default_methods(Method** old_methods, Method** new_methods, |
|
936 int methods_length, bool* trace_name_printed); |
|
937 #endif // INCLUDE_JVMTI |
912 |
938 |
913 // Garbage collection |
939 // Garbage collection |
914 void oop_follow_contents(oop obj); |
940 void oop_follow_contents(oop obj); |
915 int oop_adjust_pointers(oop obj); |
941 int oop_adjust_pointers(oop obj); |
916 |
942 |