RFR(8u): 8038636, 8055008, 8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links ...and 8057570.
Kevin Walls
kevin.walls at oracle.com
Mon Nov 13 18:08:27 UTC 2017
Hi,
I'd like to get a hotspot review of these backports from 9 to 8u. This
is mainly runtime territory but some of the history is from the compiler
side.
webrev: http://cr.openjdk.java.net/~kevinw/8055008.8156137/webrev.00/
The one we need is:
8156137: SIGSEGV in ReceiverTypeData::clean_weak_klass_links
jbs: https://bugs.openjdk.java.net/browse/JDK-8156137
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/882e8cda60b3
The 9 changeset is short, just changing klass.cpp, but not possible in 8
without additional work, so...
1.
8038636: speculative traps break when classes are redefined
https://bugs.openjdk.java.net/browse/JDK-8038636
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/a7784ddacbef
9 review thread:
http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2014-April/013948.html
(in 9 since April 2014)
That one imports cleanly into 8u.
2.
With that imported, we need:
8055008:Clean up code that saves the previous versions of redefined classes
https://bugs.openjdk.java.net/browse/JDK-8055008
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/e3fb51ae8d7d
This is the change to stop using PreviousVersionNode and get an
InstanceKlass* from previous_versions().
My webrev: http://cr.openjdk.java.net/~kevinw/8055008.8156137/webrev.00/
...is 8055008 and 8156137 in 8u. The klass.cpp change here is 8156137.
The rest is 8055008, so I can commit them separately.
8156137 doesn't have its own test, but I have found if you get this area
wrong, the test runtime/RedefineObject crashes.
Notes:
For 8055008 there was a change in
src/share/vm/classfile/classLoaderData.cpp which is already in 8u.
src/share/vm/classfile/metadataOnStackMark.cpp:
+MetadataOnStackMark::MetadataOnStackMark(bool has_redefined_a_class) {
The change is to stop using JvmtiExport::has_redefined_a_class() here
which is already in 8u at this point, but the param is already there
with a different name, so renamed as per 8055008.
universe.cpp: had a change in 8055008 but following that there was:
8057570: RedefineClasses() tests fail
assert(((Metadata*)obj)->is_valid()) failed: obj is valid
https://bugs.openjdk.java.net/browse/JDK-8057570
9 changeset: http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/479ed4234a9d
..this puts back a few lines in nmethod.cpp which 8055008 removed:
+ // Call function Method*, not embedded in these other places.
+ if (_method != NULL) f(_method);
..and in universe.cpp:
+ // Make the dependent methods not entrant (in VM_Deoptimize they are
made zombies)
+ CodeCache::make_marked_nmethods_not_entrant();
..and removes: CodeCache::make_marked_nmethods_zombies();
My webrev takes these into account.
Then there are 8038636's two follow-on bugs which I'd like to follow-up
in a separate thread.
8039960 is a test change
8040237: nsk/jvmti/RetransformClasses/retransform001 crashed the VM on
all platforms when run with with -server -Xcomp
https://bugs.openjdk.java.net/browse/JDK-8040237
Thanks!
Kevin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20171113/2f88b230/attachment-0001.html>
More information about the hotspot-compiler-dev
mailing list