< prev index next >
src/share/vm/c1/c1_LIR.cpp
Print this page
@@ -1008,10 +1008,19 @@
do_input(opProfileType->_mdp); do_temp(opProfileType->_mdp);
do_input(opProfileType->_obj);
do_temp(opProfileType->_tmp);
break;
}
+ case lir_shenandoah_wb: {
+ assert(op->as_OpShenandoahWriteBarrier() != NULL, "must be");
+ LIR_OpShenandoahWriteBarrier* opShenandoahWB = (LIR_OpShenandoahWriteBarrier*) op;
+ do_input(opShenandoahWB->_opr);
+ do_output(opShenandoahWB->_result);
+ do_temp(opShenandoahWB->_tmp1);
+ do_temp(opShenandoahWB->_tmp2);
+ break;
+ }
default:
ShouldNotReachHere();
}
}
@@ -1106,10 +1115,14 @@
if (stub()) {
masm->append_code_stub(stub());
}
}
+void LIR_OpShenandoahWriteBarrier::emit_code(LIR_Assembler* masm) {
+ masm->emit_opShenandoahWriteBarrier(this);
+}
+
void LIR_OpConvert::emit_code(LIR_Assembler* masm) {
masm->emit_opConvert(this);
if (stub() != NULL) {
masm->append_code_stub(stub());
}
@@ -1814,20 +1827,28 @@
case lir_cas_int: s = "cas_int"; break;
// LIR_OpProfileCall
case lir_profile_call: s = "profile_call"; break;
// LIR_OpProfileType
case lir_profile_type: s = "profile_type"; break;
+ case lir_shenandoah_wb: s = "shenandoah_wb"; break;
// LIR_OpAssert
#ifdef ASSERT
case lir_assert: s = "assert"; break;
#endif
case lir_none: ShouldNotReachHere();break;
default: s = "illegal_op"; break;
}
return s;
}
+void LIR_OpShenandoahWriteBarrier::print_instr(outputStream* out) const {
+ out->print("[obj: "); in_opr()->print(out); out->print("]");
+ out->print("[res: "); result_opr()->print(out); out->print("]");
+ out->print("[tmp1: "); tmp1_opr()->print(out); out->print("]");
+ out->print("[tmp2: "); tmp2_opr()->print(out); out->print("]");
+}
+
// LIR_OpJavaCall
void LIR_OpJavaCall::print_instr(outputStream* out) const {
out->print("call: ");
out->print("[addr: " INTPTR_FORMAT "]", p2i(address()));
if (receiver()->is_valid()) {
< prev index next >