src/hotspot/share/opto/output.cpp
changeset 47765 b7c7428eaab9
parent 47216 71c04702a3d5
child 49026 844bf1deff1a
equal deleted inserted replaced
47764:029d5efaaa6c 47765:b7c7428eaab9
   575     // the word in the even single-register is stored to the first
   575     // the word in the even single-register is stored to the first
   576     // memory word.  (Note that register numbers are completely
   576     // memory word.  (Note that register numbers are completely
   577     // arbitrary, and are not tied to any machine-level encodings.)
   577     // arbitrary, and are not tied to any machine-level encodings.)
   578 #ifdef _LP64
   578 #ifdef _LP64
   579     if( t->base() == Type::DoubleBot || t->base() == Type::DoubleCon ) {
   579     if( t->base() == Type::DoubleBot || t->base() == Type::DoubleCon ) {
   580       array->append(new ConstantIntValue(0));
   580       array->append(new ConstantIntValue((jint)0));
   581       array->append(new_loc_value( _regalloc, regnum, Location::dbl ));
   581       array->append(new_loc_value( _regalloc, regnum, Location::dbl ));
   582     } else if ( t->base() == Type::Long ) {
   582     } else if ( t->base() == Type::Long ) {
   583       array->append(new ConstantIntValue(0));
   583       array->append(new ConstantIntValue((jint)0));
   584       array->append(new_loc_value( _regalloc, regnum, Location::lng ));
   584       array->append(new_loc_value( _regalloc, regnum, Location::lng ));
   585     } else if ( t->base() == Type::RawPtr ) {
   585     } else if ( t->base() == Type::RawPtr ) {
   586       // jsr/ret return address which must be restored into a the full
   586       // jsr/ret return address which must be restored into a the full
   587       // width 64-bit stack slot.
   587       // width 64-bit stack slot.
   588       array->append(new_loc_value( _regalloc, regnum, Location::lng ));
   588       array->append(new_loc_value( _regalloc, regnum, Location::lng ));
   661     break;
   661     break;
   662   }
   662   }
   663   case Type::DoubleCon: {
   663   case Type::DoubleCon: {
   664     jdouble d = t->is_double_constant()->getd();
   664     jdouble d = t->is_double_constant()->getd();
   665 #ifdef _LP64
   665 #ifdef _LP64
   666     array->append(new ConstantIntValue(0));
   666     array->append(new ConstantIntValue((jint)0));
   667     array->append(new ConstantDoubleValue(d));
   667     array->append(new ConstantDoubleValue(d));
   668 #else
   668 #else
   669     // Repack the double as two jints.
   669     // Repack the double as two jints.
   670     // The convention the interpreter uses is that the second local
   670     // The convention the interpreter uses is that the second local
   671     // holds the first raw word of the native double representation.
   671     // holds the first raw word of the native double representation.
   681     break;
   681     break;
   682   }
   682   }
   683   case Type::Long: {
   683   case Type::Long: {
   684     jlong d = t->is_long()->get_con();
   684     jlong d = t->is_long()->get_con();
   685 #ifdef _LP64
   685 #ifdef _LP64
   686     array->append(new ConstantIntValue(0));
   686     array->append(new ConstantIntValue((jint)0));
   687     array->append(new ConstantLongValue(d));
   687     array->append(new ConstantLongValue(d));
   688 #else
   688 #else
   689     // Repack the long as two jints.
   689     // Repack the long as two jints.
   690     // The convention the interpreter uses is that the second local
   690     // The convention the interpreter uses is that the second local
   691     // holds the first raw word of the native double representation.
   691     // holds the first raw word of the native double representation.