RFR(S): 8212673: jtreg/applications/runthese/RunThese30M.java fails in C2 with "assert(!had_error) failed: bad dominance"
Roland Westrelin
rwestrel at redhat.com
Wed Oct 24 09:14:35 UTC 2018
http://cr.openjdk.java.net/~roland/8212673/webrev.00/
In PhiNode::Ideal():
Node* uin = unique_input(phase, false);
if (uin == NULL && can_reshape) {
uncasted = true;
uin = unique_input(phase, true);
}
can find a unique input by looking trough cast. But code below:
if ((is_loop && !uin->eqv_uncast(in(LoopNode::EntryControl))) ||
(!is_loop && is_unsafe_data_reference(uin))) {
eqv_uncast can fail because it looks through casts and load barriers if
the unique input is a load barrier. This then causes a valid input to a
Phi to be set to top.
I propose to backout JDK-8212603 and add calls to step_over_gc_barrier()
to locking optimization code only instead (which was the motivation for
JDK-8212603).
Roland.
More information about the hotspot-compiler-dev
mailing list