1.1 --- a/src/share/vm/opto/callnode.cpp Fri Aug 31 16:39:35 2012 -0700 1.2 +++ b/src/share/vm/opto/callnode.cpp Sat Sep 01 13:25:18 2012 -0400 1.3 @@ -83,7 +83,7 @@ 1.4 const Type *t = _domain->field_at(proj->_con); 1.5 if (t->base() == Type::Half) // 2nd half of Longs and Doubles 1.6 return new (match->C, 1) ConNode(Type::TOP); 1.7 - uint ideal_reg = Matcher::base2reg[t->base()]; 1.8 + uint ideal_reg = t->ideal_reg(); 1.9 RegMask &rm = match->_calling_convention_mask[parm_num]; 1.10 return new (match->C, 1) MachProjNode(this,proj->_con,rm,ideal_reg); 1.11 } 1.12 @@ -131,7 +131,7 @@ 1.13 case TypeFunc::Parms : { 1.14 // Type of argument being passed 1.15 const Type *t = in(0)->as_Start()->_domain->field_at(_con); 1.16 - return Matcher::base2reg[t->base()]; 1.17 + return t->ideal_reg(); 1.18 } 1.19 } 1.20 ShouldNotReachHere(); 1.21 @@ -344,10 +344,15 @@ 1.22 st->print(" %s%d]=#NULL",msg,i); 1.23 break; 1.24 case Type::AryPtr: 1.25 - case Type::KlassPtr: 1.26 case Type::InstPtr: 1.27 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->isa_oopptr()->const_oop()); 1.28 break; 1.29 + case Type::KlassPtr: 1.30 + st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_klassptr()->klass()); 1.31 + break; 1.32 + case Type::MetadataPtr: 1.33 + st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_metadataptr()->metadata()); 1.34 + break; 1.35 case Type::NarrowOop: 1.36 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_oopptr()->const_oop()); 1.37 break; 1.38 @@ -628,7 +633,7 @@ 1.39 return new (match->C, 1) MachProjNode(this,proj->_con, RegMask::Empty, (uint)OptoReg::Bad); 1.40 1.41 case TypeFunc::Parms: { // Normal returns 1.42 - uint ideal_reg = Matcher::base2reg[tf()->range()->field_at(TypeFunc::Parms)->base()]; 1.43 + uint ideal_reg = tf()->range()->field_at(TypeFunc::Parms)->ideal_reg(); 1.44 OptoRegPair regs = is_CallRuntime() 1.45 ? match->c_return_value(ideal_reg,true) // Calls into C runtime 1.46 : match-> return_value(ideal_reg,true); // Calls into compiled Java code