76 RTMLockingCounters* _rtm_counters; // RTM lock counters for inflated locks
77 RTMLockingCounters* _stack_rtm_counters; // RTM lock counters for stack locks
78
79 public:
80 FastLockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) {
81 init_req(0,ctrl);
82 init_class_id(Class_FastLock);
83 _rtm_counters = nullptr;
84 _stack_rtm_counters = nullptr;
85 }
86 Node* obj_node() const { return in(1); }
87 Node* box_node() const { return in(2); }
88 void set_box_node(Node* box) { set_req(2, box); }
89
90 // FastLock and FastUnlockNode do not hash, we need one for each corresponding
91 // LockNode/UnLockNode to avoid creating Phi's.
92 virtual uint hash() const ; // { return NO_HASH; }
93 virtual uint size_of() const;
94 virtual bool cmp( const Node &n ) const ; // Always fail, except on self
95 virtual int Opcode() const;
96 virtual const Type* Value(PhaseGVN* phase) const { return TypeInt::CC; }
97 const Type *sub(const Type *t1, const Type *t2) const { return TypeInt::CC;}
98
99 void create_rtm_lock_counter(JVMState* state);
100 RTMLockingCounters* rtm_counters() const { return _rtm_counters; }
101 RTMLockingCounters* stack_rtm_counters() const { return _stack_rtm_counters; }
102 };
103
104
105 //------------------------------FastUnlockNode---------------------------------
106 class FastUnlockNode: public CmpNode {
107 public:
108 FastUnlockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) {
109 init_req(0,ctrl);
110 init_class_id(Class_FastUnlock);
111 }
112 Node* obj_node() const { return in(1); }
113 Node* box_node() const { return in(2); }
114
115
116 // FastLock and FastUnlockNode do not hash, we need one for each corresponding
|
76 RTMLockingCounters* _rtm_counters; // RTM lock counters for inflated locks
77 RTMLockingCounters* _stack_rtm_counters; // RTM lock counters for stack locks
78
79 public:
80 FastLockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) {
81 init_req(0,ctrl);
82 init_class_id(Class_FastLock);
83 _rtm_counters = nullptr;
84 _stack_rtm_counters = nullptr;
85 }
86 Node* obj_node() const { return in(1); }
87 Node* box_node() const { return in(2); }
88 void set_box_node(Node* box) { set_req(2, box); }
89
90 // FastLock and FastUnlockNode do not hash, we need one for each corresponding
91 // LockNode/UnLockNode to avoid creating Phi's.
92 virtual uint hash() const ; // { return NO_HASH; }
93 virtual uint size_of() const;
94 virtual bool cmp( const Node &n ) const ; // Always fail, except on self
95 virtual int Opcode() const;
96 virtual const Type* Value(PhaseGVN* phase) const;
97 const Type *sub(const Type *t1, const Type *t2) const { return TypeInt::CC;}
98
99 void create_rtm_lock_counter(JVMState* state);
100 RTMLockingCounters* rtm_counters() const { return _rtm_counters; }
101 RTMLockingCounters* stack_rtm_counters() const { return _stack_rtm_counters; }
102 };
103
104
105 //------------------------------FastUnlockNode---------------------------------
106 class FastUnlockNode: public CmpNode {
107 public:
108 FastUnlockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) {
109 init_req(0,ctrl);
110 init_class_id(Class_FastUnlock);
111 }
112 Node* obj_node() const { return in(1); }
113 Node* box_node() const { return in(2); }
114
115
116 // FastLock and FastUnlockNode do not hash, we need one for each corresponding
|