Mercurial > hg > truffle
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 |