Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlass.hpp @ 10133:6337ca4dcad8
8008511: JSR 292: MemberName vmtarget refs to methods must be updated at class redefinition
Summary: Lazily create and maintain the MemberNameTable to be able to update MemberName's
Reviewed-by: coleenp, jrose, dholmes
Contributed-by: serguei.spitsyn@oracle.com
author | sspitsyn |
---|---|
date | Sat, 20 Apr 2013 04:07:08 -0700 |
parents | c8b31b461e1a |
children | d587a5c30bd8 |
comparison
equal
deleted
inserted
replaced
10132:5b6512efcdc4 | 10133:6337ca4dcad8 |
---|---|
88 class fieldDescriptor; | 88 class fieldDescriptor; |
89 class DepChange; | 89 class DepChange; |
90 class nmethodBucket; | 90 class nmethodBucket; |
91 class PreviousVersionNode; | 91 class PreviousVersionNode; |
92 class JvmtiCachedClassFieldMap; | 92 class JvmtiCachedClassFieldMap; |
93 class MemberNameTable; | |
93 | 94 |
94 // This is used in iterators below. | 95 // This is used in iterators below. |
95 class FieldClosure: public StackObj { | 96 class FieldClosure: public StackObj { |
96 public: | 97 public: |
97 virtual void do_field(fieldDescriptor* fd) = 0; | 98 virtual void do_field(fieldDescriptor* fd) = 0; |
244 u2 _major_version; // major version number of class file | 245 u2 _major_version; // major version number of class file |
245 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) | 246 Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) |
246 int _vtable_len; // length of Java vtable (in words) | 247 int _vtable_len; // length of Java vtable (in words) |
247 int _itable_len; // length of Java itable (in words) | 248 int _itable_len; // length of Java itable (in words) |
248 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) | 249 OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) |
250 MemberNameTable* _member_names; // Member names | |
249 JNIid* _jni_ids; // First JNI identifier for static fields in this class | 251 JNIid* _jni_ids; // First JNI identifier for static fields in this class |
250 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none | 252 jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none |
251 int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL | 253 int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL |
252 nmethodBucket* _dependencies; // list of dependent nmethods | 254 nmethodBucket* _dependencies; // list of dependent nmethods |
253 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class | 255 nmethod* _osr_nmethods_head; // Head of list of on-stack replacement nmethods for this class |
1026 virtual void restore_unshareable_info(TRAPS); | 1028 virtual void restore_unshareable_info(TRAPS); |
1027 | 1029 |
1028 // jvm support | 1030 // jvm support |
1029 jint compute_modifier_flags(TRAPS) const; | 1031 jint compute_modifier_flags(TRAPS) const; |
1030 | 1032 |
1033 // JSR-292 support | |
1034 MemberNameTable* member_names() { return _member_names; } | |
1035 void set_member_names(MemberNameTable* member_names) { _member_names = member_names; } | |
1036 void add_member_name(Handle member_name); | |
1037 | |
1031 public: | 1038 public: |
1032 // JVMTI support | 1039 // JVMTI support |
1033 jint jvmti_class_status() const; | 1040 jint jvmti_class_status() const; |
1034 | 1041 |
1035 public: | 1042 public: |