comparison src/share/vm/opto/callnode.cpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 1d7922586cf6
children e626685e9f6c
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
81 default: { 81 default: {
82 uint parm_num = proj->_con - TypeFunc::Parms; 82 uint parm_num = proj->_con - TypeFunc::Parms;
83 const Type *t = _domain->field_at(proj->_con); 83 const Type *t = _domain->field_at(proj->_con);
84 if (t->base() == Type::Half) // 2nd half of Longs and Doubles 84 if (t->base() == Type::Half) // 2nd half of Longs and Doubles
85 return new (match->C, 1) ConNode(Type::TOP); 85 return new (match->C, 1) ConNode(Type::TOP);
86 uint ideal_reg = Matcher::base2reg[t->base()]; 86 uint ideal_reg = t->ideal_reg();
87 RegMask &rm = match->_calling_convention_mask[parm_num]; 87 RegMask &rm = match->_calling_convention_mask[parm_num];
88 return new (match->C, 1) MachProjNode(this,proj->_con,rm,ideal_reg); 88 return new (match->C, 1) MachProjNode(this,proj->_con,rm,ideal_reg);
89 } 89 }
90 } 90 }
91 return NULL; 91 return NULL;
129 default : assert( _con > TypeFunc::Parms, "" ); 129 default : assert( _con > TypeFunc::Parms, "" );
130 // fall through 130 // fall through
131 case TypeFunc::Parms : { 131 case TypeFunc::Parms : {
132 // Type of argument being passed 132 // Type of argument being passed
133 const Type *t = in(0)->as_Start()->_domain->field_at(_con); 133 const Type *t = in(0)->as_Start()->_domain->field_at(_con);
134 return Matcher::base2reg[t->base()]; 134 return t->ideal_reg();
135 } 135 }
136 } 136 }
137 ShouldNotReachHere(); 137 ShouldNotReachHere();
138 return 0; 138 return 0;
139 } 139 }
342 case Type::AnyPtr: 342 case Type::AnyPtr:
343 assert( t == TypePtr::NULL_PTR, "" ); 343 assert( t == TypePtr::NULL_PTR, "" );
344 st->print(" %s%d]=#NULL",msg,i); 344 st->print(" %s%d]=#NULL",msg,i);
345 break; 345 break;
346 case Type::AryPtr: 346 case Type::AryPtr:
347 case Type::KlassPtr:
348 case Type::InstPtr: 347 case Type::InstPtr:
349 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->isa_oopptr()->const_oop()); 348 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->isa_oopptr()->const_oop());
349 break;
350 case Type::KlassPtr:
351 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_klassptr()->klass());
352 break;
353 case Type::MetadataPtr:
354 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_metadataptr()->metadata());
350 break; 355 break;
351 case Type::NarrowOop: 356 case Type::NarrowOop:
352 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_oopptr()->const_oop()); 357 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_oopptr()->const_oop());
353 break; 358 break;
354 case Type::RawPtr: 359 case Type::RawPtr:
626 assert(tf()->_range->field_at(TypeFunc::Parms+1) == Type::HALF, ""); 631 assert(tf()->_range->field_at(TypeFunc::Parms+1) == Type::HALF, "");
627 // 2nd half of doubles and longs 632 // 2nd half of doubles and longs
628 return new (match->C, 1) MachProjNode(this,proj->_con, RegMask::Empty, (uint)OptoReg::Bad); 633 return new (match->C, 1) MachProjNode(this,proj->_con, RegMask::Empty, (uint)OptoReg::Bad);
629 634
630 case TypeFunc::Parms: { // Normal returns 635 case TypeFunc::Parms: { // Normal returns
631 uint ideal_reg = Matcher::base2reg[tf()->range()->field_at(TypeFunc::Parms)->base()]; 636 uint ideal_reg = tf()->range()->field_at(TypeFunc::Parms)->ideal_reg();
632 OptoRegPair regs = is_CallRuntime() 637 OptoRegPair regs = is_CallRuntime()
633 ? match->c_return_value(ideal_reg,true) // Calls into C runtime 638 ? match->c_return_value(ideal_reg,true) // Calls into C runtime
634 : match-> return_value(ideal_reg,true); // Calls into compiled Java code 639 : match-> return_value(ideal_reg,true); // Calls into compiled Java code
635 RegMask rm = RegMask(regs.first()); 640 RegMask rm = RegMask(regs.first());
636 if( OptoReg::is_valid(regs.second()) ) 641 if( OptoReg::is_valid(regs.second()) )