< prev index next >

src/share/vm/opto/postaloc.cpp

Print this page

        

*** 660,670 **** def = def->in(idx); Node *valdef = skip_copies(def); // tighten up val through non-useless copies value.map(ureg,valdef); // record improved reaching-def info regnd.map(ureg, def); // Record other half of doubles ! uint def_ideal_reg = def->ideal_reg(); int n_regs = RegMask::num_registers(def_ideal_reg); for (int l = 1; l < n_regs; l++) { OptoReg::Name ureg_lo = OptoReg::add(ureg,-l); if (!value[ureg_lo] && (!RegMask::can_represent(ureg_lo) || --- 660,670 ---- def = def->in(idx); Node *valdef = skip_copies(def); // tighten up val through non-useless copies value.map(ureg,valdef); // record improved reaching-def info regnd.map(ureg, def); // Record other half of doubles ! Opcodes def_ideal_reg = def->ideal_reg(); int n_regs = RegMask::num_registers(def_ideal_reg); for (int l = 1; l < n_regs; l++) { OptoReg::Name ureg_lo = OptoReg::add(ureg,-l); if (!value[ureg_lo] && (!RegMask::can_represent(ureg_lo) ||
*** 704,714 **** if (regnd[nreg] != NULL && regnd[nreg]->outcnt() == 0) { regnd.map(nreg, NULL); value.map(nreg, NULL); } ! uint n_ideal_reg = n->ideal_reg(); int n_regs = RegMask::num_registers(n_ideal_reg); if (n_regs == 1) { // If Node 'n' does not change the value mapped by the register, // then 'n' is a useless copy. Do not update the register->node // mapping so 'n' will go dead. --- 704,714 ---- if (regnd[nreg] != NULL && regnd[nreg]->outcnt() == 0) { regnd.map(nreg, NULL); value.map(nreg, NULL); } ! Opcodes n_ideal_reg = n->ideal_reg(); int n_regs = RegMask::num_registers(n_ideal_reg); if (n_regs == 1) { // If Node 'n' does not change the value mapped by the register, // then 'n' is a useless copy. Do not update the register->node // mapping so 'n' will go dead.
*** 771,781 **** j -= replace_and_yank_if_dead(n, nreg, block, value, regnd); } } // Fat projections kill many registers ! if( n_ideal_reg == MachProjNode::fat_proj ) { RegMask rm = n->out_RegMask(); // wow, what an expensive iterator... nreg = rm.find_first_elem(); while( OptoReg::is_valid(nreg)) { rm.Remove(nreg); --- 771,781 ---- j -= replace_and_yank_if_dead(n, nreg, block, value, regnd); } } // Fat projections kill many registers ! if( n_ideal_reg == static_cast<Opcodes>(MachProjNode::projType::fat_proj) ) { RegMask rm = n->out_RegMask(); // wow, what an expensive iterator... nreg = rm.find_first_elem(); while( OptoReg::is_valid(nreg)) { rm.Remove(nreg);
< prev index next >