RFR(S): 8212673: jtreg/applications/runthese/RunThese30M.java fails in C2 with "assert(!had_error) failed: bad dominance"

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Oct 25 16:33:25 UTC 2018


+1

Thanks,
Vladimir

On 10/24/18 4:10 AM, Tobias Hartmann wrote:
> Hi Roland,
> 
> this looks reasonable to me.
> 
> Best regards,
> Tobias
> 
> On 24.10.18 11:14, Roland Westrelin wrote:
>>
>> 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