提交 300bd132 编写于 作者: N never

6992477: fix for 6991512 broke sparc barriers

Reviewed-by: kvn, iveresov
上级 78b3ada8
...@@ -664,7 +664,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) { ...@@ -664,7 +664,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) {
// Use temps to avoid kills // Use temps to avoid kills
LIR_Opr t1 = FrameMap::G1_opr; LIR_Opr t1 = FrameMap::G1_opr;
LIR_Opr t2 = FrameMap::G3_opr; LIR_Opr t2 = FrameMap::G3_opr;
LIR_Opr addr = (type == objectType) ? new_register(T_OBJECT) : new_pointer_register(); LIR_Opr addr = new_pointer_register();
// get address of field // get address of field
obj.load_item(); obj.load_item();
......
...@@ -499,7 +499,7 @@ void G1PostBarrierStub::emit_code(LIR_Assembler* ce) { ...@@ -499,7 +499,7 @@ void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
Register new_val_reg = new_val()->as_register(); Register new_val_reg = new_val()->as_register();
__ cmpptr(new_val_reg, (int32_t) NULL_WORD); __ cmpptr(new_val_reg, (int32_t) NULL_WORD);
__ jcc(Assembler::equal, _continuation); __ jcc(Assembler::equal, _continuation);
ce->store_parameter(addr()->as_register(), 0); ce->store_parameter(addr()->as_pointer_register(), 0);
__ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id))); __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id)));
__ jmp(_continuation); __ jmp(_continuation);
} }
......
...@@ -765,7 +765,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) { ...@@ -765,7 +765,7 @@ void LIRGenerator::do_CompareAndSwap(Intrinsic* x, ValueType* type) {
ShouldNotReachHere(); ShouldNotReachHere();
} }
LIR_Opr addr = (type == objectType) ? new_register(T_OBJECT) : new_pointer_register(); LIR_Opr addr = new_pointer_register();
LIR_Address* a; LIR_Address* a;
if(offset.result()->is_constant()) { if(offset.result()->is_constant()) {
a = new LIR_Address(obj.result(), a = new LIR_Address(obj.result(),
......
...@@ -1350,7 +1350,6 @@ void LIRGenerator::G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_Opr ...@@ -1350,7 +1350,6 @@ void LIRGenerator::G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_Opr
addr = ptr; addr = ptr;
} }
assert(addr->is_register(), "must be a register at this point"); assert(addr->is_register(), "must be a register at this point");
assert(addr->type() == T_OBJECT, "addr should point to an object");
LIR_Opr xor_res = new_pointer_register(); LIR_Opr xor_res = new_pointer_register();
LIR_Opr xor_shift_res = new_pointer_register(); LIR_Opr xor_shift_res = new_pointer_register();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册