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: