src/share/vm/c1/c1_LIR.hpp

changeset 5353
b800986664f4
parent 4947
acadb114c818
child 5628
f98f5d48f511
     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);

mercurial