src/share/vm/opto/locknode.hpp

changeset 3406
e9a5e0a812c8
parent 2708
1d1603768966
child 3419
b0ff910edfc9
     1.1 --- a/src/share/vm/opto/locknode.hpp	Sat Jan 07 10:39:23 2012 -0800
     1.2 +++ b/src/share/vm/opto/locknode.hpp	Sat Jan 07 13:26:43 2012 -0800
     1.3 @@ -49,11 +49,11 @@
     1.4  
     1.5  //------------------------------BoxLockNode------------------------------------
     1.6  class BoxLockNode : public Node {
     1.7 -public:
     1.8    const int _slot;
     1.9    RegMask   _inmask;
    1.10    bool _is_eliminated;    // indicates this lock was safely eliminated
    1.11  
    1.12 +public:
    1.13    BoxLockNode( int lock );
    1.14    virtual int Opcode() const;
    1.15    virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
    1.16 @@ -66,11 +66,17 @@
    1.17    virtual const class Type *bottom_type() const { return TypeRawPtr::BOTTOM; }
    1.18    virtual uint ideal_reg() const { return Op_RegP; }
    1.19  
    1.20 -  static OptoReg::Name stack_slot(Node* box_node);
    1.21 +  static OptoReg::Name reg(Node* box_node);
    1.22 +  static BoxLockNode* box_node(Node* box_node);
    1.23 +  static bool same_slot(Node* box1, Node* box2);
    1.24 +  int stack_slot() const { return _slot; }
    1.25  
    1.26 -  bool is_eliminated()  { return _is_eliminated; }
    1.27 +  bool is_eliminated() const { return _is_eliminated; }
    1.28    // mark lock as eliminated.
    1.29 -  void set_eliminated() { _is_eliminated = true; }
    1.30 +  void set_eliminated()      { _is_eliminated = true; }
    1.31 +
    1.32 +  // Is BoxLock node used for one simple lock region?
    1.33 +  bool is_simple_lock_region(LockNode** unique_lock, Node* obj);
    1.34  
    1.35  #ifndef PRODUCT
    1.36    virtual void format( PhaseRegAlloc *, outputStream *st ) const;
    1.37 @@ -91,6 +97,7 @@
    1.38    }
    1.39    Node* obj_node() const { return in(1); }
    1.40    Node* box_node() const { return in(2); }
    1.41 +  void  set_box_node(Node* box) { set_req(2, box); }
    1.42  
    1.43    // FastLock and FastUnlockNode do not hash, we need one for each correspoding
    1.44    // LockNode/UnLockNode to avoid creating Phi's.

mercurial