hotspot/src/share/vm/opto/coalesce.cpp
changeset 22914 0712db174bbb
parent 19721 8ecbb2cdc965
child 24923 9631f7d691dc
equal deleted inserted replaced
22913:d80017962061 22914:0712db174bbb
   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.