mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8155951: VM crash in nsk/jvmti/RedefineClasses/StressRedefine: assert failed: Corrupted constant pool
8151066: assert(0 <= i && i < length()) failed: index out of bounds Lock classes for redefinition because constant pool merging isn't thread safe, use method constant pool because constant pool merging doesn't make equivalent cpCaches because of invokedynamic Reviewed-by: sspitsyn, dholmes
This commit is contained in:
parent
e84506041e
commit
178842d251
7 changed files with 75 additions and 25 deletions
|
@ -190,6 +190,7 @@ class InstanceKlass: public Klass {
|
|||
// _is_marked_dependent can be set concurrently, thus cannot be part of the
|
||||
// _misc_flags.
|
||||
bool _is_marked_dependent; // used for marking during flushing and deoptimization
|
||||
bool _is_being_redefined; // used for locking redefinition
|
||||
|
||||
// The low two bits of _misc_flags contains the kind field.
|
||||
// This can be used to quickly discriminate among the four kinds of
|
||||
|
@ -694,6 +695,10 @@ class InstanceKlass: public Klass {
|
|||
}
|
||||
|
||||
#if INCLUDE_JVMTI
|
||||
// Redefinition locking. Class can only be redefined by one thread at a time.
|
||||
bool is_being_redefined() const { return _is_being_redefined; }
|
||||
void set_is_being_redefined(bool value) { _is_being_redefined = value; }
|
||||
|
||||
// RedefineClasses() support for previous versions:
|
||||
void add_previous_version(instanceKlassHandle ikh, int emcp_method_count);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue