8008511: JSR 292: MemberName vmtarget refs to methods must be updated at class redefinition

Lazily create and maintain the MemberNameTable to be able to update MemberName's

Reviewed-by: coleenp, jrose, dholmes
This commit is contained in:
Serguei Spitsyn 2013-04-20 04:07:08 -07:00 committed by Serguei Spitsyn
parent 46b3969016
commit 87f3086e13
9 changed files with 231 additions and 58 deletions

View file

@ -90,6 +90,7 @@ class DepChange;
class nmethodBucket;
class PreviousVersionNode;
class JvmtiCachedClassFieldMap;
class MemberNameTable;
// This is used in iterators below.
class FieldClosure: public StackObj {
@ -246,6 +247,7 @@ class InstanceKlass: public Klass {
int _vtable_len; // length of Java vtable (in words)
int _itable_len; // length of Java itable (in words)
OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily)
MemberNameTable* _member_names; // Member names
JNIid* _jni_ids; // First JNI identifier for static fields in this class
jmethodID* _methods_jmethod_ids; // jmethodIDs corresponding to method_idnum, or NULL if none
int* _methods_cached_itable_indices; // itable_index cache for JNI invoke corresponding to methods idnum, or NULL
@ -1028,6 +1030,11 @@ public:
// jvm support
jint compute_modifier_flags(TRAPS) const;
// JSR-292 support
MemberNameTable* member_names() { return _member_names; }
void set_member_names(MemberNameTable* member_names) { _member_names = member_names; }
void add_member_name(Handle member_name);
public:
// JVMTI support
jint jvmti_class_status() const;