--- old/src/share/vm/c1/c1_LIR.cpp 2015-10-14 13:53:46.092569580 +0200 +++ new/src/share/vm/c1/c1_LIR.cpp 2015-10-14 13:53:45.940573255 +0200 @@ -1010,6 +1010,15 @@ 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(); } @@ -1108,6 +1117,10 @@ } } +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) { @@ -1816,6 +1829,7 @@ 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; @@ -1826,6 +1840,13 @@ 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: ");