[14] RFR(S): 8229016: C2 scalarization crashes with assert(node->Opcode() == Op_CastP2X) failed: ConvP2XNode required

Tobias Hartmann tobias.hartmann at oracle.com
Tue Aug 6 05:41:31 UTC 2019


Thanks Vladimir.

Best regards,
Tobias

On 06.08.19 01:26, Vladimir Kozlov wrote:
> Good.
> 
> Thanks,
> Vladimir
> 
> On 8/5/19 6:48 AM, Tobias Hartmann wrote:
>> Hi,
>>
>> please review the following patch:
>> https://bugs.openjdk.java.net/browse/JDK-8229016
>> http://cr.openjdk.java.net/~thartmann/8229016/webrev.00/
>>
>> When processing safepoint uses of a non-escaping array allocation during scalar replacement, we try
>> to determine array element values from memory. In this case, a copy to the array is replaced by
>> individual loads from the source [1]. Because the array copy has src == dst, we end up adding new
>> loads from the to-be-eliminated array which confuses/crashes the following removal code.
>>
>> We should detect this case and try to determine the value from memory instead of adding a new load.
>>
>> Thanks,
>> Tobias
>>
>> [1] see PhaseMacroExpand::scalar_replacement -> PhaseMacroExpand::value_from_mem ->
>> PhaseMacroExpand::make_arraycopy_load
>>


More information about the hotspot-compiler-dev mailing list