< prev index next >

src/share/vm/opto/output.cpp

Print this page




 611     } else if( t->base() == Type::Int && OptoReg::is_reg(regnum) ) {
 612       array->append(new_loc_value( _regalloc, regnum, Matcher::int_in_long
 613                                    ? Location::int_in_long : Location::normal ));
 614     } else if( t->base() == Type::NarrowOop ) {
 615       array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
 616     } else {
 617       array->append(new_loc_value( _regalloc, regnum, _regalloc->is_oop(local) ? Location::oop : Location::normal ));
 618     }
 619     return;
 620   }
 621 
 622   // No register.  It must be constant data.
 623   switch (t->base()) {
 624   case Type::Half:              // Second half of a double
 625     ShouldNotReachHere();       // Caller should skip 2nd halves
 626     break;
 627   case Type::AnyPtr:
 628     array->append(new ConstantOopWriteValue(NULL));
 629     break;
 630   case Type::AryPtr:

 631   case Type::InstPtr:          // fall through
 632     array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->constant_encoding()));
 633     break;
 634   case Type::NarrowOop:
 635     if (t == TypeNarrowOop::NULL_PTR) {
 636       array->append(new ConstantOopWriteValue(NULL));
 637     } else {
 638       array->append(new ConstantOopWriteValue(t->make_ptr()->isa_oopptr()->const_oop()->constant_encoding()));
 639     }
 640     break;
 641   case Type::Int:
 642     array->append(new ConstantIntValue(t->is_int()->get_con()));
 643     break;
 644   case Type::RawPtr:
 645     // A return address (T_ADDRESS).
 646     assert((intptr_t)t->is_ptr()->get_con() < (intptr_t)0x10000, "must be a valid BCI");
 647 #ifdef _LP64
 648     // Must be restored to the full-width 64-bit stack slot.
 649     array->append(new ConstantLongValue(t->is_ptr()->get_con()));
 650 #else




 611     } else if( t->base() == Type::Int && OptoReg::is_reg(regnum) ) {
 612       array->append(new_loc_value( _regalloc, regnum, Matcher::int_in_long
 613                                    ? Location::int_in_long : Location::normal ));
 614     } else if( t->base() == Type::NarrowOop ) {
 615       array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
 616     } else {
 617       array->append(new_loc_value( _regalloc, regnum, _regalloc->is_oop(local) ? Location::oop : Location::normal ));
 618     }
 619     return;
 620   }
 621 
 622   // No register.  It must be constant data.
 623   switch (t->base()) {
 624   case Type::Half:              // Second half of a double
 625     ShouldNotReachHere();       // Caller should skip 2nd halves
 626     break;
 627   case Type::AnyPtr:
 628     array->append(new ConstantOopWriteValue(NULL));
 629     break;
 630   case Type::AryPtr:
 631   case Type::ValueTypePtr:
 632   case Type::InstPtr:          // fall through
 633     array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->constant_encoding()));
 634     break;
 635   case Type::NarrowOop:
 636     if (t == TypeNarrowOop::NULL_PTR) {
 637       array->append(new ConstantOopWriteValue(NULL));
 638     } else {
 639       array->append(new ConstantOopWriteValue(t->make_ptr()->isa_oopptr()->const_oop()->constant_encoding()));
 640     }
 641     break;
 642   case Type::Int:
 643     array->append(new ConstantIntValue(t->is_int()->get_con()));
 644     break;
 645   case Type::RawPtr:
 646     // A return address (T_ADDRESS).
 647     assert((intptr_t)t->is_ptr()->get_con() < (intptr_t)0x10000, "must be a valid BCI");
 648 #ifdef _LP64
 649     // Must be restored to the full-width 64-bit stack slot.
 650     array->append(new ConstantLongValue(t->is_ptr()->get_con()));
 651 #else


< prev index next >