< prev index next >

src/hotspot/share/runtime/objectMonitor.inline.hpp

Print this page

127 // Returns true if owner field == DEFLATER_MARKER and false otherwise.
128 inline bool ObjectMonitor::owner_is_DEFLATER_MARKER() const {
129   return owner_raw() == DEFLATER_MARKER;
130 }
131 
132 // Returns true if 'this' is being async deflated and false otherwise.
133 inline bool ObjectMonitor::is_being_async_deflated() {
134   return contentions() < 0;
135 }
136 
137 // Return number of threads contending for this monitor.
138 inline int ObjectMonitor::contentions() const {
139   return Atomic::load(&_contentions);
140 }
141 
142 // Add value to the contentions field.
143 inline void ObjectMonitor::add_to_contentions(int value) {
144   Atomic::add(&_contentions, value);
145 }
146 















147 inline void ObjectMonitor::set_recursions(size_t recursions) {
148   assert(_recursions == 0, "must be");
149   assert(has_owner(), "must be owned");
150   _recursions = checked_cast<intx>(recursions);
151 }
152 
153 inline void ObjectMonitor::increment_recursions(JavaThread* current) {
154   assert(has_owner(current), "must be the owner");
155   _recursions++;
156 }
157 
158 // Clear _owner field; current value must match old_value.
159 inline void ObjectMonitor::release_clear_owner(JavaThread* old_owner) {
160   int64_t old_value = owner_id_from(old_owner);
161 #ifdef ASSERT
162   int64_t prev = Atomic::load(&_owner);
163   assert(prev == old_value, "unexpected prev owner=" INT64_FORMAT
164          ", expected=" INT64_FORMAT, prev, old_value);
165 #endif
166   Atomic::release_store(&_owner, NO_OWNER);

127 // Returns true if owner field == DEFLATER_MARKER and false otherwise.
128 inline bool ObjectMonitor::owner_is_DEFLATER_MARKER() const {
129   return owner_raw() == DEFLATER_MARKER;
130 }
131 
132 // Returns true if 'this' is being async deflated and false otherwise.
133 inline bool ObjectMonitor::is_being_async_deflated() {
134   return contentions() < 0;
135 }
136 
137 // Return number of threads contending for this monitor.
138 inline int ObjectMonitor::contentions() const {
139   return Atomic::load(&_contentions);
140 }
141 
142 // Add value to the contentions field.
143 inline void ObjectMonitor::add_to_contentions(int value) {
144   Atomic::add(&_contentions, value);
145 }
146 
147 inline void ObjectMonitor::inc_unmounted_vthreads() {
148   assert(_unmounted_vthreads >= 0, "");
149   Atomic::inc(&_unmounted_vthreads, memory_order_relaxed);
150 }
151 
152 inline void ObjectMonitor::dec_unmounted_vthreads() {
153   assert(_unmounted_vthreads > 0, "");
154   Atomic::dec(&_unmounted_vthreads, memory_order_relaxed);
155 }
156 
157 inline bool ObjectMonitor::has_unmounted_vthreads() const {
158   assert(_unmounted_vthreads >= 0, "");
159   return Atomic::load(&_unmounted_vthreads) > 0;
160 }
161 
162 inline void ObjectMonitor::set_recursions(size_t recursions) {
163   assert(_recursions == 0, "must be");
164   assert(has_owner(), "must be owned");
165   _recursions = checked_cast<intx>(recursions);
166 }
167 
168 inline void ObjectMonitor::increment_recursions(JavaThread* current) {
169   assert(has_owner(current), "must be the owner");
170   _recursions++;
171 }
172 
173 // Clear _owner field; current value must match old_value.
174 inline void ObjectMonitor::release_clear_owner(JavaThread* old_owner) {
175   int64_t old_value = owner_id_from(old_owner);
176 #ifdef ASSERT
177   int64_t prev = Atomic::load(&_owner);
178   assert(prev == old_value, "unexpected prev owner=" INT64_FORMAT
179          ", expected=" INT64_FORMAT, prev, old_value);
180 #endif
181   Atomic::release_store(&_owner, NO_OWNER);
< prev index next >