1.1 --- a/src/share/vm/c1/c1_LIR.cpp Tue Jul 02 07:51:31 2013 +0200 1.2 +++ b/src/share/vm/c1/c1_LIR.cpp Tue Jul 02 20:42:12 2013 -0400 1.3 @@ -430,6 +430,11 @@ 1.4 _stub = new ArrayCopyStub(this); 1.5 } 1.6 1.7 +LIR_OpUpdateCRC32::LIR_OpUpdateCRC32(LIR_Opr crc, LIR_Opr val, LIR_Opr res) 1.8 + : LIR_Op(lir_updatecrc32, res, NULL) 1.9 + , _crc(crc) 1.10 + , _val(val) { 1.11 +} 1.12 1.13 //-------------------verify-------------------------- 1.14 1.15 @@ -876,6 +881,20 @@ 1.16 } 1.17 1.18 1.19 +// LIR_OpUpdateCRC32 1.20 + case lir_updatecrc32: { 1.21 + assert(op->as_OpUpdateCRC32() != NULL, "must be"); 1.22 + LIR_OpUpdateCRC32* opUp = (LIR_OpUpdateCRC32*)op; 1.23 + 1.24 + assert(opUp->_crc->is_valid(), "used"); do_input(opUp->_crc); do_temp(opUp->_crc); 1.25 + assert(opUp->_val->is_valid(), "used"); do_input(opUp->_val); do_temp(opUp->_val); 1.26 + assert(opUp->_result->is_valid(), "used"); do_output(opUp->_result); 1.27 + assert(opUp->_info == NULL, "no info for LIR_OpUpdateCRC32"); 1.28 + 1.29 + break; 1.30 + } 1.31 + 1.32 + 1.33 // LIR_OpLock 1.34 case lir_lock: 1.35 case lir_unlock: { 1.36 @@ -1056,6 +1075,10 @@ 1.37 masm->emit_code_stub(stub()); 1.38 } 1.39 1.40 +void LIR_OpUpdateCRC32::emit_code(LIR_Assembler* masm) { 1.41 + masm->emit_updatecrc32(this); 1.42 +} 1.43 + 1.44 void LIR_Op0::emit_code(LIR_Assembler* masm) { 1.45 masm->emit_op0(this); 1.46 } 1.47 @@ -1763,6 +1786,8 @@ 1.48 case lir_dynamic_call: s = "dynamic"; break; 1.49 // LIR_OpArrayCopy 1.50 case lir_arraycopy: s = "arraycopy"; break; 1.51 + // LIR_OpUpdateCRC32 1.52 + case lir_updatecrc32: s = "updatecrc32"; break; 1.53 // LIR_OpLock 1.54 case lir_lock: s = "lock"; break; 1.55 case lir_unlock: s = "unlock"; break; 1.56 @@ -1815,6 +1840,13 @@ 1.57 tmp()->print(out); out->print(" "); 1.58 } 1.59 1.60 +// LIR_OpUpdateCRC32 1.61 +void LIR_OpUpdateCRC32::print_instr(outputStream* out) const { 1.62 + crc()->print(out); out->print(" "); 1.63 + val()->print(out); out->print(" "); 1.64 + result_opr()->print(out); out->print(" "); 1.65 +} 1.66 + 1.67 // LIR_OpCompareAndSwap 1.68 void LIR_OpCompareAndSwap::print_instr(outputStream* out) const { 1.69 addr()->print(out); out->print(" ");