8029383: assert(counter_changed) failed: failed dependencies, but counter didn't change

No call to SystemDictionary::notice_modification() when class is defined through Unsafe.defineAnonymousClass() can caused missed dependency change.

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2013-12-13 09:25:44 +01:00
parent da079783f8
commit bbb97e5b39
2 changed files with 3 additions and 3 deletions

View file

@ -1049,6 +1049,9 @@ Klass* SystemDictionary::parse_stream(Symbol* class_name,
add_to_hierarchy(k, CHECK_NULL); // No exception, but can block add_to_hierarchy(k, CHECK_NULL); // No exception, but can block
// But, do not add to system dictionary. // But, do not add to system dictionary.
// compiled code dependencies need to be validated anyway
notice_modification();
} }
// Rewrite and patch constant pool here. // Rewrite and patch constant pool here.

View file

@ -147,9 +147,6 @@ void VM_RedefineClasses::doit() {
_scratch_classes[i] = NULL; _scratch_classes[i] = NULL;
} }
// Disable any dependent concurrent compilations
SystemDictionary::notice_modification();
// Set flag indicating that some invariants are no longer true. // Set flag indicating that some invariants are no longer true.
// See jvmtiExport.hpp for detailed explanation. // See jvmtiExport.hpp for detailed explanation.
JvmtiExport::set_has_redefined_a_class(); JvmtiExport::set_has_redefined_a_class();