hotspot/src/share/vm/opto/output.cpp
changeset 1135 9487203e5789
parent 781 e1baa9c8f16f
child 1495 128fe18951ed
equal deleted inserted replaced
1134:799dce8f3426 1135:9487203e5789
   683       array->append(new_loc_value( _regalloc, regnum, Matcher::float_in_double
   683       array->append(new_loc_value( _regalloc, regnum, Matcher::float_in_double
   684                                    ? Location::float_in_dbl : Location::normal ));
   684                                    ? Location::float_in_dbl : Location::normal ));
   685     } else if( t->base() == Type::Int && OptoReg::is_reg(regnum) ) {
   685     } else if( t->base() == Type::Int && OptoReg::is_reg(regnum) ) {
   686       array->append(new_loc_value( _regalloc, regnum, Matcher::int_in_long
   686       array->append(new_loc_value( _regalloc, regnum, Matcher::int_in_long
   687                                    ? Location::int_in_long : Location::normal ));
   687                                    ? Location::int_in_long : Location::normal ));
       
   688     } else if( t->base() == Type::NarrowOop ) {
       
   689       array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
   688     } else {
   690     } else {
   689       array->append(new_loc_value( _regalloc, regnum, _regalloc->is_oop(local) ? Location::oop : Location::normal ));
   691       array->append(new_loc_value( _regalloc, regnum, _regalloc->is_oop(local) ? Location::oop : Location::normal ));
   690     }
   692     }
   691     return;
   693     return;
   692   }
   694   }
   701     break;
   703     break;
   702   case Type::AryPtr:
   704   case Type::AryPtr:
   703   case Type::InstPtr:
   705   case Type::InstPtr:
   704   case Type::KlassPtr:          // fall through
   706   case Type::KlassPtr:          // fall through
   705     array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->encoding()));
   707     array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->encoding()));
       
   708     break;
       
   709   case Type::NarrowOop:
       
   710     if (t == TypeNarrowOop::NULL_PTR) {
       
   711       array->append(new ConstantOopWriteValue(NULL));
       
   712     } else {
       
   713       array->append(new ConstantOopWriteValue(t->make_ptr()->isa_oopptr()->const_oop()->encoding()));
       
   714     }
   706     break;
   715     break;
   707   case Type::Int:
   716   case Type::Int:
   708     array->append(new ConstantIntValue(t->is_int()->get_con()));
   717     array->append(new ConstantIntValue(t->is_int()->get_con()));
   709     break;
   718     break;
   710   case Type::RawPtr:
   719   case Type::RawPtr:
   876           }
   885           }
   877           scval = sv;
   886           scval = sv;
   878         }
   887         }
   879       } else if( !obj_node->is_Con() ) {
   888       } else if( !obj_node->is_Con() ) {
   880         OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
   889         OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
   881         scval = new_loc_value( _regalloc, obj_reg, Location::oop );
   890         if( obj_node->bottom_type()->base() == Type::NarrowOop ) {
       
   891           scval = new_loc_value( _regalloc, obj_reg, Location::narrowoop );
       
   892         } else {
       
   893           scval = new_loc_value( _regalloc, obj_reg, Location::oop );
       
   894         }
   882       } else {
   895       } else {
   883         scval = new ConstantOopWriteValue(obj_node->bottom_type()->is_instptr()->const_oop()->encoding());
   896         const TypePtr *tp = obj_node->bottom_type()->make_ptr();
       
   897         scval = new ConstantOopWriteValue(tp->is_instptr()->const_oop()->encoding());
   884       }
   898       }
   885 
   899 
   886       OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
   900       OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
   887       Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
   901       Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
   888       monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));
   902       monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));