comparison src/share/vm/oops/instanceKlass.hpp @ 12264:b2e698d2276c

8014013: CallInfo structure no longer accurately reports the result of a LinkResolver operation Summary: Enhance method resolution and resulting data structures, plus some refactoring. Reviewed-by: twisti, acorn, jrose
author drchase
date Fri, 13 Sep 2013 22:38:02 -0400
parents e22ee8e7ae62
children 0f37d1badced
comparison
equal deleted inserted replaced
12261:2c98370f2611 12264:b2e698d2276c
243 int _itable_len; // length of Java itable (in words) 243 int _itable_len; // length of Java itable (in words)
244 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) 244 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
245 MemberNameTable* _member_names; // Member names 245 MemberNameTable* _member_names; // Member names
246 JNIid* _jni_ids; // First JNI identifier for static fields in this class 246 JNIid* _jni_ids; // First JNI identifier for static fields in this class
247 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none 247 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none
248 int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL
249 nmethodBucket* _dependencies; // list of dependent nmethods 248 nmethodBucket* _dependencies; // list of dependent nmethods
250 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class 249 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class
251 BreakpointInfo* _breakpoints; // bpt lists, managed by Method* 250 BreakpointInfo* _breakpoints; // bpt lists, managed by Method*
252 // Array of interesting part(s) of the previous version(s) of this 251 // Array of interesting part(s) of the previous version(s) of this
253 // InstanceKlass. See PreviousVersionWalker below. 252 // InstanceKlass. See PreviousVersionWalker below.
688 jmethodID** to_dealloc_jmeths_p); 687 jmethodID** to_dealloc_jmeths_p);
689 static void get_jmethod_id_length_value(jmethodID* cache, size_t idnum, 688 static void get_jmethod_id_length_value(jmethodID* cache, size_t idnum,
690 size_t *length_p, jmethodID* id_p); 689 size_t *length_p, jmethodID* id_p);
691 jmethodID jmethod_id_or_null(Method* method); 690 jmethodID jmethod_id_or_null(Method* method);
692 691
693 // cached itable index support
694 void set_cached_itable_index(size_t idnum, int index);
695 int cached_itable_index(size_t idnum);
696
697 // annotations support 692 // annotations support
698 Annotations* annotations() const { return _annotations; } 693 Annotations* annotations() const { return _annotations; }
699 void set_annotations(Annotations* anno) { _annotations = anno; } 694 void set_annotations(Annotations* anno) { _annotations = anno; }
700 695
701 AnnotationArray* class_annotations() const { 696 AnnotationArray* class_annotations() const {
991 bool idnum_can_increment() const { return has_been_redefined(); } 986 bool idnum_can_increment() const { return has_been_redefined(); }
992 jmethodID* methods_jmethod_ids_acquire() const 987 jmethodID* methods_jmethod_ids_acquire() const
993 { return (jmethodID*)OrderAccess::load_ptr_acquire(&_methods_jmethod_ids); } 988 { return (jmethodID*)OrderAccess::load_ptr_acquire(&_methods_jmethod_ids); }
994 void release_set_methods_jmethod_ids(jmethodID* jmeths) 989 void release_set_methods_jmethod_ids(jmethodID* jmeths)
995 { OrderAccess::release_store_ptr(&_methods_jmethod_ids, jmeths); } 990 { OrderAccess::release_store_ptr(&_methods_jmethod_ids, jmeths); }
996
997 int* methods_cached_itable_indices_acquire() const
998 { return (int*)OrderAccess::load_ptr_acquire(&_methods_cached_itable_indices); }
999 void release_set_methods_cached_itable_indices(int* indices)
1000 { OrderAccess::release_store_ptr(&_methods_cached_itable_indices, indices); }
1001 991
1002 // Lock during initialization 992 // Lock during initialization
1003 public: 993 public:
1004 // Lock for (1) initialization; (2) access to the ConstantPool of this class. 994 // Lock for (1) initialization; (2) access to the ConstantPool of this class.
1005 // Must be one per class and it has to be a VM internal object so java code 995 // Must be one per class and it has to be a VM internal object so java code