Mercurial > hg > graal-compiler
changeset 14220:f9508a2fd4d8
8029383: assert(counter_changed) failed: failed dependencies, but counter didn't change
Summary: no call to SystemDictionary::notice_modification() when class is defined through Unsafe.defineAnonymousClass() can caused missed dependency change.
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Fri, 13 Dec 2013 09:25:44 +0100 |
parents | 9ae5189791f4 |
children | 2353011244bd |
files | src/share/vm/classfile/systemDictionary.cpp src/share/vm/prims/jvmtiRedefineClasses.cpp |
diffstat | 2 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/classfile/systemDictionary.cpp Thu Dec 12 15:11:35 2013 -0500 +++ b/src/share/vm/classfile/systemDictionary.cpp Fri Dec 13 09:25:44 2013 +0100 @@ -1049,6 +1049,9 @@ add_to_hierarchy(k, CHECK_NULL); // No exception, but can block // But, do not add to system dictionary. + + // compiled code dependencies need to be validated anyway + notice_modification(); } // Rewrite and patch constant pool here.
--- a/src/share/vm/prims/jvmtiRedefineClasses.cpp Thu Dec 12 15:11:35 2013 -0500 +++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp Fri Dec 13 09:25:44 2013 +0100 @@ -147,9 +147,6 @@ _scratch_classes[i] = NULL; } - // Disable any dependent concurrent compilations - SystemDictionary::notice_modification(); - // Set flag indicating that some invariants are no longer true. // See jvmtiExport.hpp for detailed explanation. JvmtiExport::set_has_redefined_a_class();