289 pred->add_inst(copy); |
289 pred->add_inst(copy); |
290 // Copy any flags as well |
290 // Copy any flags as well |
291 _phc.clone_projs(pred, pred->end_idx(), m, copy, _phc._lrg_map); |
291 _phc.clone_projs(pred, pred->end_idx(), m, copy, _phc._lrg_map); |
292 } else { |
292 } else { |
293 const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()]; |
293 const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()]; |
294 copy = new (C) MachSpillCopyNode(m, *rm, *rm); |
294 copy = new (C) MachSpillCopyNode(MachSpillCopyNode::PhiInput, m, *rm, *rm); |
295 // Find a good place to insert. Kinda tricky, use a subroutine |
295 // Find a good place to insert. Kinda tricky, use a subroutine |
296 insert_copy_with_overlap(pred,copy,phi_name,src_name); |
296 insert_copy_with_overlap(pred,copy,phi_name,src_name); |
297 } |
297 } |
298 // Insert the copy in the use-def chain |
298 // Insert the copy in the use-def chain |
299 n->set_req(j, copy); |
299 n->set_req(j, copy); |
323 // Insert the copy in the basic block, just before us |
323 // Insert the copy in the basic block, just before us |
324 b->insert_node(copy, l++); |
324 b->insert_node(copy, l++); |
325 l += _phc.clone_projs(b, l, m, copy, _phc._lrg_map); |
325 l += _phc.clone_projs(b, l, m, copy, _phc._lrg_map); |
326 } else { |
326 } else { |
327 const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()]; |
327 const RegMask *rm = C->matcher()->idealreg2spillmask[m->ideal_reg()]; |
328 copy = new (C) MachSpillCopyNode(m, *rm, *rm); |
328 copy = new (C) MachSpillCopyNode(MachSpillCopyNode::TwoAddress, m, *rm, *rm); |
329 // Insert the copy in the basic block, just before us |
329 // Insert the copy in the basic block, just before us |
330 b->insert_node(copy, l++); |
330 b->insert_node(copy, l++); |
331 } |
331 } |
332 // Insert the copy in the use-def chain |
332 // Insert the copy in the use-def chain |
333 n->set_req(idx, copy); |
333 n->set_req(idx, copy); |
370 break; // Live in to some successor block? |
370 break; // Live in to some successor block? |
371 if( k < b->_num_succs ) |
371 if( k < b->_num_succs ) |
372 continue; // Live out; do not pre-split |
372 continue; // Live out; do not pre-split |
373 // Split the lrg at this use |
373 // Split the lrg at this use |
374 const RegMask *rm = C->matcher()->idealreg2spillmask[inp->ideal_reg()]; |
374 const RegMask *rm = C->matcher()->idealreg2spillmask[inp->ideal_reg()]; |
375 Node *copy = new (C) MachSpillCopyNode( inp, *rm, *rm ); |
375 Node* copy = new (C) MachSpillCopyNode(MachSpillCopyNode::DebugUse, inp, *rm, *rm); |
376 // Insert the copy in the use-def chain |
376 // Insert the copy in the use-def chain |
377 n->set_req(inpidx, copy ); |
377 n->set_req(inpidx, copy ); |
378 // Insert the copy in the basic block, just before us |
378 // Insert the copy in the basic block, just before us |
379 b->insert_node(copy, l++); |
379 b->insert_node(copy, l++); |
380 // Extend ("register allocate") the names array for the copy. |
380 // Extend ("register allocate") the names array for the copy. |