comparison src/share/vm/opto/reg_split.cpp @ 6948:e522a00b91aa

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author Doug Simon <doug.simon@oracle.com>
date Mon, 12 Nov 2012 23:14:12 +0100
parents e626685e9f6c
children 2aff40cb4703
comparison
equal deleted inserted replaced
6711:ae13cc658b80 6948:e522a00b91aa
644 // add new phinode if one not already found 644 // add new phinode if one not already found
645 if( needs_phi ) { 645 if( needs_phi ) {
646 // create a new phi node and insert it into the block 646 // create a new phi node and insert it into the block
647 // type is taken from left over pointer to a predecessor 647 // type is taken from left over pointer to a predecessor
648 assert(n3,"No non-NULL reaching DEF for a Phi"); 648 assert(n3,"No non-NULL reaching DEF for a Phi");
649 phi = new (C, b->num_preds()) PhiNode(b->head(), n3->bottom_type()); 649 phi = new (C) PhiNode(b->head(), n3->bottom_type());
650 // initialize the Reaches entry for this LRG 650 // initialize the Reaches entry for this LRG
651 Reachblock[slidx] = phi; 651 Reachblock[slidx] = phi;
652 652
653 // add node to block & node_to_block mapping 653 // add node to block & node_to_block mapping
654 insert_proj( b, insidx++, phi, maxlrg++ ); 654 insert_proj( b, insidx++, phi, maxlrg++ );
1194 deflrg.reg() < LRG::SPILL_REG ) { // And DEF is from stack 1194 deflrg.reg() < LRG::SPILL_REG ) { // And DEF is from stack
1195 LRG &uselrg = lrgs(useidx); 1195 LRG &uselrg = lrgs(useidx);
1196 if( OptoReg::is_stack(uselrg.reg()) && 1196 if( OptoReg::is_stack(uselrg.reg()) &&
1197 uselrg.reg() < LRG::SPILL_REG && // USE is from stack 1197 uselrg.reg() < LRG::SPILL_REG && // USE is from stack
1198 deflrg.reg() != uselrg.reg() ) { // Not trivially removed 1198 deflrg.reg() != uselrg.reg() ) { // Not trivially removed
1199 uint def_ideal_reg = Matcher::base2reg[n->bottom_type()->base()]; 1199 uint def_ideal_reg = n->bottom_type()->ideal_reg();
1200 const RegMask &def_rm = *Matcher::idealreg2regmask[def_ideal_reg]; 1200 const RegMask &def_rm = *Matcher::idealreg2regmask[def_ideal_reg];
1201 const RegMask &use_rm = n->in_RegMask(copyidx); 1201 const RegMask &use_rm = n->in_RegMask(copyidx);
1202 if( def_rm.overlap(use_rm) && n->is_SpillCopy() ) { // Bug 4707800, 'n' may be a storeSSL 1202 if( def_rm.overlap(use_rm) && n->is_SpillCopy() ) { // Bug 4707800, 'n' may be a storeSSL
1203 if (C->check_node_count(NodeLimitFudgeFactor, out_of_nodes)) { // Check when generating nodes 1203 if (C->check_node_count(NodeLimitFudgeFactor, out_of_nodes)) { // Check when generating nodes
1204 return 0; 1204 return 0;