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

Nils Eliasson nils.eliasson at oracle.com
Mon Mar 5 15:50:59 UTC 2018


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