Mercurial > hg > graal-compiler
comparison src/share/vm/opto/locknode.hpp @ 17810:62c54fcc0a35
Merge
author | kvn |
---|---|
date | Tue, 25 Mar 2014 17:07:36 -0700 |
parents | d2907f74462e 606acabe7b5c |
children | 52b4284cb496 |
comparison
equal
deleted
inserted
replaced
17809:a433eb716ce1 | 17810:62c54fcc0a35 |
---|---|
90 }; | 90 }; |
91 | 91 |
92 //------------------------------FastLockNode----------------------------------- | 92 //------------------------------FastLockNode----------------------------------- |
93 class FastLockNode: public CmpNode { | 93 class FastLockNode: public CmpNode { |
94 private: | 94 private: |
95 BiasedLockingCounters* _counters; | 95 BiasedLockingCounters* _counters; |
96 RTMLockingCounters* _rtm_counters; // RTM lock counters for inflated locks | |
97 RTMLockingCounters* _stack_rtm_counters; // RTM lock counters for stack locks | |
96 | 98 |
97 public: | 99 public: |
98 FastLockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) { | 100 FastLockNode(Node *ctrl, Node *oop, Node *box) : CmpNode(oop,box) { |
99 init_req(0,ctrl); | 101 init_req(0,ctrl); |
100 init_class_id(Class_FastLock); | 102 init_class_id(Class_FastLock); |
101 _counters = NULL; | 103 _counters = NULL; |
104 _rtm_counters = NULL; | |
105 _stack_rtm_counters = NULL; | |
102 } | 106 } |
103 Node* obj_node() const { return in(1); } | 107 Node* obj_node() const { return in(1); } |
104 Node* box_node() const { return in(2); } | 108 Node* box_node() const { return in(2); } |
105 void set_box_node(Node* box) { set_req(2, box); } | 109 void set_box_node(Node* box) { set_req(2, box); } |
106 | 110 |
107 // FastLock and FastUnlockNode do not hash, we need one for each correspoding | 111 // FastLock and FastUnlockNode do not hash, we need one for each correspoding |
108 // LockNode/UnLockNode to avoid creating Phi's. | 112 // LockNode/UnLockNode to avoid creating Phi's. |
109 virtual uint hash() const ; // { return NO_HASH; } | 113 virtual uint hash() const ; // { return NO_HASH; } |
114 virtual uint size_of() const; | |
110 virtual uint cmp( const Node &n ) const ; // Always fail, except on self | 115 virtual uint cmp( const Node &n ) const ; // Always fail, except on self |
111 virtual int Opcode() const; | 116 virtual int Opcode() const; |
112 virtual const Type *Value( PhaseTransform *phase ) const { return TypeInt::CC; } | 117 virtual const Type *Value( PhaseTransform *phase ) const { return TypeInt::CC; } |
113 const Type *sub(const Type *t1, const Type *t2) const { return TypeInt::CC;} | 118 const Type *sub(const Type *t1, const Type *t2) const { return TypeInt::CC;} |
114 | 119 |
115 void create_lock_counter(JVMState* s); | 120 void create_lock_counter(JVMState* s); |
116 BiasedLockingCounters* counters() const { return _counters; } | 121 void create_rtm_lock_counter(JVMState* state); |
122 BiasedLockingCounters* counters() const { return _counters; } | |
123 RTMLockingCounters* rtm_counters() const { return _rtm_counters; } | |
124 RTMLockingCounters* stack_rtm_counters() const { return _stack_rtm_counters; } | |
117 }; | 125 }; |
118 | 126 |
119 | 127 |
120 //------------------------------FastUnlockNode--------------------------------- | 128 //------------------------------FastUnlockNode--------------------------------- |
121 class FastUnlockNode: public CmpNode { | 129 class FastUnlockNode: public CmpNode { |