RFR(S): 8192992: Test8007294.java failed: attempted to spill a non-spillable item
nils.eliasson at oracle.com
Mon Mar 5 15:50:59 UTC 2018
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.
More information about the hotspot-compiler-dev