< prev index next >

src/hotspot/share/opto/output.cpp

Print this page




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




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

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


< prev index next >