src/share/vm/opto/reg_split.cpp

changeset 9333
2fccf735a116
parent 6198
55fb97c4c58d
child 9448
73d689add964
child 9741
7e0a4478e80f
equal deleted inserted replaced
9332:ae93017b2930 9333:2fccf735a116
1 /* 1 /*
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
57 // not cover the input (or output), use the input (or output) mask instead. 57 // not cover the input (or output), use the input (or output) mask instead.
58 Node *PhaseChaitin::get_spillcopy_wide( Node *def, Node *use, uint uidx ) { 58 Node *PhaseChaitin::get_spillcopy_wide( Node *def, Node *use, uint uidx ) {
59 // If ideal reg doesn't exist we've got a bad schedule happening 59 // If ideal reg doesn't exist we've got a bad schedule happening
60 // that is forcing us to spill something that isn't spillable. 60 // that is forcing us to spill something that isn't spillable.
61 // Bail rather than abort 61 // Bail rather than abort
62 int ireg = def->ideal_reg(); 62 uint ireg = def->ideal_reg();
63 if( ireg == 0 || ireg == Op_RegFlags ) { 63 if( ireg == 0 || ireg == Op_RegFlags ) {
64 assert(false, "attempted to spill a non-spillable item"); 64 assert(false, "attempted to spill a non-spillable item");
65 C->record_method_not_compilable("attempted to spill a non-spillable item"); 65 C->record_method_not_compilable("attempted to spill a non-spillable item");
66 return NULL; 66 return NULL;
67 } 67 }
1161 set_was_spilled(n); 1161 set_was_spilled(n);
1162 assert(!n->is_Phi(),"Cannot insert Phi into DEFS list"); 1162 assert(!n->is_Phi(),"Cannot insert Phi into DEFS list");
1163 // Grab UP info for DEF 1163 // Grab UP info for DEF
1164 const RegMask &dmask = n->out_RegMask(); 1164 const RegMask &dmask = n->out_RegMask();
1165 bool defup = dmask.is_UP(); 1165 bool defup = dmask.is_UP();
1166 int ireg = n->ideal_reg(); 1166 uint ireg = n->ideal_reg();
1167 bool is_vect = RegMask::is_vector(ireg); 1167 bool is_vect = RegMask::is_vector(ireg);
1168 // Only split at Def if this is a HRP block or bound (and spilled once) 1168 // Only split at Def if this is a HRP block or bound (and spilled once)
1169 if( !n->rematerialize() && 1169 if( !n->rematerialize() &&
1170 (((dmask.is_bound(ireg) || !is_vect && dmask.is_misaligned_pair()) && 1170 (((dmask.is_bound(ireg) || !is_vect && dmask.is_misaligned_pair()) &&
1171 (deflrg._direct_conflict || deflrg._must_spill)) || 1171 (deflrg._direct_conflict || deflrg._must_spill)) ||

mercurial