< prev index next >
src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.hpp
Print this page
rev 55609 : Eliminate extra forwarding pointer per object
*** 124,149 ****
LIR_Opr _addr;
LIR_Opr _cmp_value;
LIR_Opr _new_value;
LIR_Opr _tmp1;
LIR_Opr _tmp2;
public:
LIR_OpShenandoahCompareAndSwap(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value,
! LIR_Opr t1, LIR_Opr t2, LIR_Opr result)
: LIR_Op(lir_none, result, NULL) // no info
, _addr(addr)
, _cmp_value(cmp_value)
, _new_value(new_value)
, _tmp1(t1)
! , _tmp2(t2) { }
LIR_Opr addr() const { return _addr; }
LIR_Opr cmp_value() const { return _cmp_value; }
LIR_Opr new_value() const { return _new_value; }
LIR_Opr tmp1() const { return _tmp1; }
LIR_Opr tmp2() const { return _tmp2; }
virtual void visit(LIR_OpVisitState* state) {
assert(_addr->is_valid(), "used");
assert(_cmp_value->is_valid(), "used");
assert(_new_value->is_valid(), "used");
--- 124,152 ----
LIR_Opr _addr;
LIR_Opr _cmp_value;
LIR_Opr _new_value;
LIR_Opr _tmp1;
LIR_Opr _tmp2;
+ LIR_Opr _tmp3;
public:
LIR_OpShenandoahCompareAndSwap(LIR_Opr addr, LIR_Opr cmp_value, LIR_Opr new_value,
! LIR_Opr t1, LIR_Opr t2, LIR_Opr t3, LIR_Opr result)
: LIR_Op(lir_none, result, NULL) // no info
, _addr(addr)
, _cmp_value(cmp_value)
, _new_value(new_value)
, _tmp1(t1)
! , _tmp2(t2)
! , _tmp3(t3) { }
LIR_Opr addr() const { return _addr; }
LIR_Opr cmp_value() const { return _cmp_value; }
LIR_Opr new_value() const { return _new_value; }
LIR_Opr tmp1() const { return _tmp1; }
LIR_Opr tmp2() const { return _tmp2; }
+ LIR_Opr tmp3() const { return _tmp3; }
virtual void visit(LIR_OpVisitState* state) {
assert(_addr->is_valid(), "used");
assert(_cmp_value->is_valid(), "used");
assert(_new_value->is_valid(), "used");
*** 154,163 ****
--- 157,167 ----
state->do_temp(_cmp_value);
state->do_input(_new_value);
state->do_temp(_new_value);
if (_tmp1->is_valid()) state->do_temp(_tmp1);
if (_tmp2->is_valid()) state->do_temp(_tmp2);
+ if (_tmp3->is_valid()) state->do_temp(_tmp3);
if (_result->is_valid()) state->do_output(_result);
}
virtual void emit_code(LIR_Assembler* masm);
*** 165,174 ****
--- 169,179 ----
addr()->print(out); out->print(" ");
cmp_value()->print(out); out->print(" ");
new_value()->print(out); out->print(" ");
tmp1()->print(out); out->print(" ");
tmp2()->print(out); out->print(" ");
+ tmp3()->print(out); out->print(" ");
}
#ifndef PRODUCT
virtual const char* name() const {
return "shenandoah_cas_obj";
}
< prev index next >