RFR(S): 8192992: Test8007294.java failed: attempted to spill a non-spillable item

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon Mar 5 17:02:22 UTC 2018


Hi Nils,

Yes, it is legal workaround but this way you removed all subsuming loads 
in code.

Should we do anti-dependency check for loads during matching when shared 
nodes are marked?:

http://hg.openjdk.java.net/jdk/hs/file/4e82736053ae/src/hotspot/share/opto/matcher.cpp#l2159

How expensive would be that?

Vladimir

On 3/5/18 7:50 AM, Nils Eliasson wrote:
> Hi,
> 
> This patch is a workaround for a scheduling problem encountered in some 
> rare circumstances. Instead of hitting the assert we retry the 
> compilation without subsuming loads.
> 
> To quote Tobias:
> 
> "The crash happens because a testN_mem_reg0 (CmpN(LoadN(mem), NULL)) is 
> scheduled in a different block than its jmpCon user and the register 
> allocator tries to spill the flag register. The problem is that 
> PhaseCFG::schedule_late() detects an anti-dependency for the 
> testN_mem_reg0 on a bottom memory Phi and therefore raises the LCA to 
> the early block (see PhaseCFG::insert_anti_dependences()) which is "far 
> away" from its jmpCon user. "
> 
> Thanks to Roland who suggested the workaround.
> 
> https://bugs.openjdk.java.net/browse/JDK-8192992
> 
> http://cr.openjdk.java.net/~neliasso/8192992/webrev.01/
> 
> Regards,
> 
> Nils
> 


More information about the hotspot-compiler-dev mailing list