src/share/vm/opto/coalesce.cpp

changeset 9514
d853bac073f8
parent 9513
e044997c2eda
child 9572
624a0741915c
     1.1 --- a/src/share/vm/opto/coalesce.cpp	Mon Oct 15 11:00:27 2018 +0200
     1.2 +++ b/src/share/vm/opto/coalesce.cpp	Wed Oct 24 10:42:54 2018 +0200
     1.3 @@ -25,6 +25,7 @@
     1.4  #include "precompiled.hpp"
     1.5  #include "memory/allocation.inline.hpp"
     1.6  #include "opto/block.hpp"
     1.7 +#include "opto/c2compiler.hpp"
     1.8  #include "opto/cfgnode.hpp"
     1.9  #include "opto/chaitin.hpp"
    1.10  #include "opto/coalesce.hpp"
    1.11 @@ -294,9 +295,13 @@
    1.12              } else {
    1.13                int ireg = m->ideal_reg();
    1.14                if (ireg == 0 || ireg == Op_RegFlags) {
    1.15 -                assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
    1.16 -                                      m->_idx, m->Name(), ireg));
    1.17 -                C->record_method_not_compilable("attempted to spill a non-spillable item");
    1.18 +                if (C->subsume_loads()) {
    1.19 +                  C->record_failure(C2Compiler::retry_no_subsuming_loads());
    1.20 +                } else {
    1.21 +                  assert(false, err_msg("attempted to spill a non-spillable item: %d: %s, ireg = %d",
    1.22 +                                        m->_idx, m->Name(), ireg));
    1.23 +                  C->record_method_not_compilable("attempted to spill a non-spillable item");
    1.24 +                }
    1.25                  return;
    1.26                }
    1.27                const RegMask *rm = C->matcher()->idealreg2spillmask[ireg];

mercurial