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

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Aug 5 23:26:59 UTC 2019


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