1.1 --- a/src/share/vm/c1/c1_LIR.hpp Tue Jul 02 07:51:31 2013 +0200 1.2 +++ b/src/share/vm/c1/c1_LIR.hpp Tue Jul 02 20:42:12 2013 -0400 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -877,6 +877,7 @@ 1.11 class LIR_OpJavaCall; 1.12 class LIR_OpRTCall; 1.13 class LIR_OpArrayCopy; 1.14 +class LIR_OpUpdateCRC32; 1.15 class LIR_OpLock; 1.16 class LIR_OpTypeCheck; 1.17 class LIR_OpCompareAndSwap; 1.18 @@ -982,6 +983,9 @@ 1.19 , begin_opArrayCopy 1.20 , lir_arraycopy 1.21 , end_opArrayCopy 1.22 + , begin_opUpdateCRC32 1.23 + , lir_updatecrc32 1.24 + , end_opUpdateCRC32 1.25 , begin_opLock 1.26 , lir_lock 1.27 , lir_unlock 1.28 @@ -1137,6 +1141,7 @@ 1.29 virtual LIR_Op2* as_Op2() { return NULL; } 1.30 virtual LIR_Op3* as_Op3() { return NULL; } 1.31 virtual LIR_OpArrayCopy* as_OpArrayCopy() { return NULL; } 1.32 + virtual LIR_OpUpdateCRC32* as_OpUpdateCRC32() { return NULL; } 1.33 virtual LIR_OpTypeCheck* as_OpTypeCheck() { return NULL; } 1.34 virtual LIR_OpCompareAndSwap* as_OpCompareAndSwap() { return NULL; } 1.35 virtual LIR_OpProfileCall* as_OpProfileCall() { return NULL; } 1.36 @@ -1293,6 +1298,25 @@ 1.37 void print_instr(outputStream* out) const PRODUCT_RETURN; 1.38 }; 1.39 1.40 +// LIR_OpUpdateCRC32 1.41 +class LIR_OpUpdateCRC32: public LIR_Op { 1.42 + friend class LIR_OpVisitState; 1.43 + 1.44 +private: 1.45 + LIR_Opr _crc; 1.46 + LIR_Opr _val; 1.47 + 1.48 +public: 1.49 + 1.50 + LIR_OpUpdateCRC32(LIR_Opr crc, LIR_Opr val, LIR_Opr res); 1.51 + 1.52 + LIR_Opr crc() const { return _crc; } 1.53 + LIR_Opr val() const { return _val; } 1.54 + 1.55 + virtual void emit_code(LIR_Assembler* masm); 1.56 + virtual LIR_OpUpdateCRC32* as_OpUpdateCRC32() { return this; } 1.57 + void print_instr(outputStream* out) const PRODUCT_RETURN; 1.58 +}; 1.59 1.60 // -------------------------------------------------- 1.61 // LIR_Op0 1.62 @@ -2212,6 +2236,8 @@ 1.63 1.64 void arraycopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length, LIR_Opr tmp, ciArrayKlass* expected_type, int flags, CodeEmitInfo* info) { append(new LIR_OpArrayCopy(src, src_pos, dst, dst_pos, length, tmp, expected_type, flags, info)); } 1.65 1.66 + void update_crc32(LIR_Opr crc, LIR_Opr val, LIR_Opr res) { append(new LIR_OpUpdateCRC32(crc, val, res)); } 1.67 + 1.68 void fpop_raw() { append(new LIR_Op0(lir_fpop_raw)); } 1.69 1.70 void instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, CodeEmitInfo* info_for_patch, ciMethod* profiled_method, int profiled_bci);