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

Nils Eliasson nils.eliasson at oracle.com
Mon Aug 20 14:27:00 UTC 2018


I forgot - for 11, this is an adequate safe fix. For 12 too, until we 
can solve it in a better manner.

Consider it reviewed.

And a extra big thank you for efficient and reliable the repro!

//Nils



On 2018-08-17 17:26, Roland Westrelin wrote:
> http://cr.openjdk.java.net/~roland/8209639/webrev.00/
>
> There are 2 loads for the same field in the test() method of the test
> case, one in an exception handler, one in the normal code path. The 2
> loads are commoned and the resulting load is between the call and the
> catch node. The only use for the load is a test against null. The test +
> load is matched as a testN_mem_reg0 and is later cloned by
> PhaseCFG::call_catch_cleanup() and the 2 clones are merged by a Phi
> causing a spill of a flag register.
>
> The straightforward fix I suggest here is to bailout and re-attempt
> compilation with load subsuming disabled.
>
> The test fails with 8 (with a SIGSEGV) 12 and I suppose 11 as well but I
> haven't tried. I'm fine with fixing this for 12 and backporting the fix
> later.
>
> Roland.



More information about the hotspot-compiler-dev mailing list