src/share/vm/c1/c1_LIR.cpp

changeset 5353
b800986664f4
parent 5290
87a6f2df28e2
child 5914
d13d7aba8c12
     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(" ");

mercurial