comparison src/share/vm/opto/locknode.cpp @ 17780:606acabe7b5c

8031320: Use Intel RTM instructions for locks Summary: Use RTM for inflated locks and stack locks. Reviewed-by: iveresov, twisti, roland, dcubed
author kvn
date Thu, 20 Mar 2014 17:49:27 -0700
parents beebba0acc11
children
comparison
equal deleted inserted replaced
17778:a48e16541e6b 17780:606acabe7b5c
134 134
135 //============================================================================= 135 //=============================================================================
136 //-----------------------------hash-------------------------------------------- 136 //-----------------------------hash--------------------------------------------
137 uint FastLockNode::hash() const { return NO_HASH; } 137 uint FastLockNode::hash() const { return NO_HASH; }
138 138
139 uint FastLockNode::size_of() const { return sizeof(*this); }
140
139 //------------------------------cmp-------------------------------------------- 141 //------------------------------cmp--------------------------------------------
140 uint FastLockNode::cmp( const Node &n ) const { 142 uint FastLockNode::cmp( const Node &n ) const {
141 return (&n == this); // Always fail except on self 143 return (&n == this); // Always fail except on self
142 } 144 }
143 145
157 BiasedLockingNamedCounter* blnc = (BiasedLockingNamedCounter*) 159 BiasedLockingNamedCounter* blnc = (BiasedLockingNamedCounter*)
158 OptoRuntime::new_named_counter(state, NamedCounter::BiasedLockingCounter); 160 OptoRuntime::new_named_counter(state, NamedCounter::BiasedLockingCounter);
159 _counters = blnc->counters(); 161 _counters = blnc->counters();
160 } 162 }
161 163
164 void FastLockNode::create_rtm_lock_counter(JVMState* state) {
165 #if INCLUDE_RTM_OPT
166 Compile* C = Compile::current();
167 if (C->profile_rtm() || (PrintPreciseRTMLockingStatistics && C->use_rtm())) {
168 RTMLockingNamedCounter* rlnc = (RTMLockingNamedCounter*)
169 OptoRuntime::new_named_counter(state, NamedCounter::RTMLockingCounter);
170 _rtm_counters = rlnc->counters();
171 if (UseRTMForStackLocks) {
172 rlnc = (RTMLockingNamedCounter*)
173 OptoRuntime::new_named_counter(state, NamedCounter::RTMLockingCounter);
174 _stack_rtm_counters = rlnc->counters();
175 }
176 }
177 #endif
178 }
179
162 //============================================================================= 180 //=============================================================================
163 //------------------------------do_monitor_enter------------------------------- 181 //------------------------------do_monitor_enter-------------------------------
164 void Parse::do_monitor_enter() { 182 void Parse::do_monitor_enter() {
165 kill_dead_locals(); 183 kill_dead_locals();
166 184