src/share/vm/opto/callnode.cpp

changeset 4037
da91efe96a93
parent 3969
1d7922586cf6
child 4115
e626685e9f6c
     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

mercurial