Lines Matching refs:spill

41 // HRP between it and one of its uses.  We will spill at the transition
65 // wide ideal-register spill-mask if possible. If the 'wide-mask' does
69 // that is forcing us to spill something that isn't spillable.
73 assert(false, "attempted to spill a non-spillable item");
74 C->record_method_not_compilable("attempted to spill a non-spillable item");
109 // Insert the spill at chosen location. Skip over any intervening Proj's or
112 void PhaseChaitin::insert_proj( Block *b, uint i, Node *spill, uint maxlrg ) {
134 b->_nodes.insert(i,spill); // Insert node in block
135 _cfg._bbs.map(spill->_idx,b); // Update node->block mapping to reflect
142 new_lrg(spill,maxlrg);
159 // the null-check first, then spill-down in the following block.
171 Node *spill = get_spillcopy_wide(def,NULL,0);
173 if (!spill) {
177 // Insert the spill at chosen location
178 insert_proj( b, loc+1, spill, maxlrg++);
181 Reachblock[slidx] = spill;
183 debug_defs[slidx] = spill;
228 Node *spill = get_spillcopy_wide(def,use,useidx);
230 if (!spill) {
235 insert_proj( b, bindex, spill, maxlrg++ );
237 use->set_req(useidx,spill);
271 // Phi input spill-copys belong at the end of the prior block
280 Node *spill = get_spillcopy_wide( def, use, useidx );
281 if( !spill ) return 0; // Bailed out
284 insert_proj( b, bindex, spill, maxlrg++ );
285 // Use the spill/clone
286 use->set_req(useidx,spill);
331 if( lidx >= _maxlrg ) continue; // Value is a recent spill-copy
345 Node *spill = clone_node(def, b, C);
346 if (spill == NULL || C->check_node_count(NodeLimitFudgeFactor, out_of_nodes)) {
353 if( spill->req() > 1 ) {
354 for( uint i = 1; i < spill->req(); i++ ) {
355 Node *in = spill->in(i);
358 // Walk backwards thru spill copy node intermediates
368 in = spill->in(i);
375 if( rdef ) spill->set_req(i,rdef);
381 assert( spill->out_RegMask().is_UP(), "rematerialize to a reg" );
383 set_was_spilled(spill);
385 set_was_spilled(spill);
387 insert_proj( b, insidx, spill, maxlrg++ );
394 if( clone_projs( b, i, def, spill, maxlrg ) ) {
400 return spill;
503 tty->print_cr("Warning, 2nd spill of L%d",bidx);
563 // If no Phi is needed, check if the LRG needs to spill on entry
718 // instructions normally, inserting SpillCopy nodes for all spill
739 // Check for useless Phis. These appear if we spill, then
881 // Not a brand-new split, and it is a spill use
920 // spill it down now.
1061 Node *spill = new (C) MachSpillCopyNode(def, dmask, *tmp_rm);
1062 insert_proj( b, insidx, spill, maxlrg );
1064 maxlrg = split_USE(spill,b,n,inpidx,maxlrg,false,false, splits,slidx);
1119 // spill hard (instead of not spilling hard and
1193 } // End if spill def
1215 Node *spill = new (C) MachSpillCopyNode(use,use_rm,def_rm);
1216 n->set_req(copyidx,spill);
1218 // Put the spill just before the copy
1219 insert_proj( b, insidx++, spill, maxlrg++ );
1287 // split to invert back. It changes which blocks the spill code