8037149: C1: getThreadTemp should return a T_LONG register on 64bit

Fix the type of the register returned by getThreadTemp() to depend on bitness

Reviewed-by: kvn, twisti
This commit is contained in:
Igor Veresov 2014-03-13 14:55:10 -07:00
parent faad7883f2
commit af7a190f21
2 changed files with 3 additions and 3 deletions

View file

@ -3320,7 +3320,7 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest,
// if tmp is invalid, then the function being called doesn't destroy the thread // if tmp is invalid, then the function being called doesn't destroy the thread
if (tmp->is_valid()) { if (tmp->is_valid()) {
__ save_thread(tmp->as_register()); __ save_thread(tmp->as_pointer_register());
} }
__ call(dest, relocInfo::runtime_call_type); __ call(dest, relocInfo::runtime_call_type);
__ delayed()->nop(); __ delayed()->nop();
@ -3328,7 +3328,7 @@ void LIR_Assembler::rt_call(LIR_Opr result, address dest,
add_call_info_here(info); add_call_info_here(info);
} }
if (tmp->is_valid()) { if (tmp->is_valid()) {
__ restore_thread(tmp->as_register()); __ restore_thread(tmp->as_pointer_register());
} }
#ifdef ASSERT #ifdef ASSERT

View file

@ -69,7 +69,7 @@ void LIRItem::load_nonconstant() {
LIR_Opr LIRGenerator::exceptionOopOpr() { return FrameMap::Oexception_opr; } LIR_Opr LIRGenerator::exceptionOopOpr() { return FrameMap::Oexception_opr; }
LIR_Opr LIRGenerator::exceptionPcOpr() { return FrameMap::Oissuing_pc_opr; } LIR_Opr LIRGenerator::exceptionPcOpr() { return FrameMap::Oissuing_pc_opr; }
LIR_Opr LIRGenerator::syncTempOpr() { return new_register(T_OBJECT); } LIR_Opr LIRGenerator::syncTempOpr() { return new_register(T_OBJECT); }
LIR_Opr LIRGenerator::getThreadTemp() { return rlock_callee_saved(T_INT); } LIR_Opr LIRGenerator::getThreadTemp() { return rlock_callee_saved(NOT_LP64(T_INT) LP64_ONLY(T_LONG)); }
LIR_Opr LIRGenerator::result_register_for(ValueType* type, bool callee) { LIR_Opr LIRGenerator::result_register_for(ValueType* type, bool callee) {
LIR_Opr opr; LIR_Opr opr;