diff -r e044997c2eda -r d853bac073f8 src/share/vm/opto/coalesce.cpp --- a/src/share/vm/opto/coalesce.cpp Mon Oct 15 11:00:27 2018 +0200 +++ b/src/share/vm/opto/coalesce.cpp Wed Oct 24 10:42:54 2018 +0200 @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "memory/allocation.inline.hpp" #include "opto/block.hpp" +#include "opto/c2compiler.hpp" #include "opto/cfgnode.hpp" #include "opto/chaitin.hpp" #include "opto/coalesce.hpp" @@ -294,9 +295,13 @@ } else { int ireg = m->ideal_reg(); if (ireg == 0 || ireg == Op_RegFlags) { - assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d", - m->_idx, m->Name(), ireg)); - C->record_method_not_compilable("attempted to spill a non-spillable item"); + if (C->subsume_loads()) { + C->record_failure(C2Compiler::retry_no_subsuming_loads()); + } else { + assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d", + m->_idx, m->Name(), ireg)); + C->record_method_not_compilable("attempted to spill a non-spillable item"); + } return; } const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];