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.