RFR(S): 8209639: assert failure in coalesce.cpp: attempted to spill a non-spillable item

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Aug 20 20:07:12 UTC 2018


On 8/20/18 7:33 AM, Roland Westrelin wrote:
> 
> Thank you for looking at this.
> 
>> "Hammer approach" ;)
> 
> Right.
> 
>> Did we forgot to mark testN_mem_reg0 as node producing flag? We do
>> restrict some RA optimizations when nodes produce flags.
> 
> But given, the load is between the call and the catch node, it must be
> cloned by PhaseCFG::call_catch_cleanup(). So if the load is matched as a
> testN_mem_reg0, once it is cloned, there are 2 of them merged by a Phi
> but we can't merge flags. That all happens before register
> allocation. As I understand we would have to not match the load as a
> testN_mem_reg0 if it's between the call and the catch node but that's
> hard to test in the matcher.

Got it. You general fix is good.

Thanks,
Vladimir

> 
> Roland.
> 
> 


More information about the hotspot-compiler-dev mailing list