src/share/vm/c1/c1_Instruction.hpp

changeset 4106
7eca5de9e0b6
parent 4037
da91efe96a93
child 4860
46f6f063b272
     1.1 --- a/src/share/vm/c1/c1_Instruction.hpp	Wed Sep 19 16:50:26 2012 -0700
     1.2 +++ b/src/share/vm/c1/c1_Instruction.hpp	Thu Sep 20 16:49:17 2012 +0200
     1.3 @@ -102,6 +102,7 @@
     1.4  class     UnsafeObjectOp;
     1.5  class       UnsafeGetObject;
     1.6  class       UnsafePutObject;
     1.7 +class         UnsafeGetAndSetObject;
     1.8  class       UnsafePrefetch;
     1.9  class         UnsafePrefetchRead;
    1.10  class         UnsafePrefetchWrite;
    1.11 @@ -202,6 +203,7 @@
    1.12    virtual void do_UnsafePutRaw   (UnsafePutRaw*    x) = 0;
    1.13    virtual void do_UnsafeGetObject(UnsafeGetObject* x) = 0;
    1.14    virtual void do_UnsafePutObject(UnsafePutObject* x) = 0;
    1.15 +  virtual void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) = 0;
    1.16    virtual void do_UnsafePrefetchRead (UnsafePrefetchRead*  x) = 0;
    1.17    virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0;
    1.18    virtual void do_ProfileCall    (ProfileCall*     x) = 0;
    1.19 @@ -2273,6 +2275,27 @@
    1.20                                                     f->visit(&_value); }
    1.21  };
    1.22  
    1.23 +LEAF(UnsafeGetAndSetObject, UnsafeObjectOp)
    1.24 + private:
    1.25 +  Value _value;                                  // Value to be stored
    1.26 +  bool  _is_add;
    1.27 + public:
    1.28 +  UnsafeGetAndSetObject(BasicType basic_type, Value object, Value offset, Value value, bool is_add)
    1.29 +  : UnsafeObjectOp(basic_type, object, offset, false, false)
    1.30 +    , _value(value)
    1.31 +    , _is_add(is_add)
    1.32 +  {
    1.33 +    ASSERT_VALUES
    1.34 +  }
    1.35 +
    1.36 +  // accessors
    1.37 +  bool is_add() const                            { return _is_add; }
    1.38 +  Value value()                                  { return _value; }
    1.39 +
    1.40 +  // generic
    1.41 +  virtual void input_values_do(ValueVisitor* f)   { UnsafeObjectOp::input_values_do(f);
    1.42 +                                                   f->visit(&_value); }
    1.43 +};
    1.44  
    1.45  BASE(UnsafePrefetch, UnsafeObjectOp)
    1.46   public:

mercurial