< prev index next >

src/share/vm/opto/output.cpp

Print this page




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

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




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


< prev index next >