< prev index next >

src/hotspot/share/runtime/objectMonitor.hpp

Print this page

200   // objects which can happen at normal VM shutdown.
201   //
202   #define OM_PERFDATA_OP(f, op_str)                 \
203     do {                                            \
204       if (ObjectMonitor::_sync_ ## f != nullptr &&  \
205           PerfDataManager::has_PerfData()) {        \
206         ObjectMonitor::_sync_ ## f->op_str;         \
207       }                                             \
208     } while (0)
209 
210   static PerfCounter * _sync_ContendedLockAttempts;
211   static PerfCounter * _sync_FutileWakeups;
212   static PerfCounter * _sync_Parks;
213   static PerfCounter * _sync_Notifications;
214   static PerfCounter * _sync_Inflations;
215   static PerfCounter * _sync_Deflations;
216   static PerfLongVariable * _sync_MonExtant;
217 
218   static int Knob_SpinLimit;
219 

220   static ByteSize owner_offset()       { return byte_offset_of(ObjectMonitor, _owner); }
221   static ByteSize recursions_offset()  { return byte_offset_of(ObjectMonitor, _recursions); }
222   static ByteSize cxq_offset()         { return byte_offset_of(ObjectMonitor, _cxq); }
223   static ByteSize succ_offset()        { return byte_offset_of(ObjectMonitor, _succ); }
224   static ByteSize EntryList_offset()   { return byte_offset_of(ObjectMonitor, _EntryList); }
225 
226   // ObjectMonitor references can be ORed with markWord::monitor_value
227   // as part of the ObjectMonitor tagging mechanism. When we combine an
228   // ObjectMonitor reference with an offset, we need to remove the tag
229   // value in order to generate the proper address.
230   //
231   // We can either adjust the ObjectMonitor reference and then add the
232   // offset or we can adjust the offset that is added to the ObjectMonitor
233   // reference. The latter avoids an AGI (Address Generation Interlock)
234   // stall so the helper macro adjusts the offset value that is returned
235   // to the ObjectMonitor reference manipulation code:
236   //
237   #define OM_OFFSET_NO_MONITOR_VALUE_TAG(f) \
238     ((in_bytes(ObjectMonitor::f ## _offset())) - markWord::monitor_value)
239 

200   // objects which can happen at normal VM shutdown.
201   //
202   #define OM_PERFDATA_OP(f, op_str)                 \
203     do {                                            \
204       if (ObjectMonitor::_sync_ ## f != nullptr &&  \
205           PerfDataManager::has_PerfData()) {        \
206         ObjectMonitor::_sync_ ## f->op_str;         \
207       }                                             \
208     } while (0)
209 
210   static PerfCounter * _sync_ContendedLockAttempts;
211   static PerfCounter * _sync_FutileWakeups;
212   static PerfCounter * _sync_Parks;
213   static PerfCounter * _sync_Notifications;
214   static PerfCounter * _sync_Inflations;
215   static PerfCounter * _sync_Deflations;
216   static PerfLongVariable * _sync_MonExtant;
217 
218   static int Knob_SpinLimit;
219 
220   static ByteSize header_offset()      { return byte_offset_of(ObjectMonitor, _header); }
221   static ByteSize owner_offset()       { return byte_offset_of(ObjectMonitor, _owner); }
222   static ByteSize recursions_offset()  { return byte_offset_of(ObjectMonitor, _recursions); }
223   static ByteSize cxq_offset()         { return byte_offset_of(ObjectMonitor, _cxq); }
224   static ByteSize succ_offset()        { return byte_offset_of(ObjectMonitor, _succ); }
225   static ByteSize EntryList_offset()   { return byte_offset_of(ObjectMonitor, _EntryList); }
226 
227   // ObjectMonitor references can be ORed with markWord::monitor_value
228   // as part of the ObjectMonitor tagging mechanism. When we combine an
229   // ObjectMonitor reference with an offset, we need to remove the tag
230   // value in order to generate the proper address.
231   //
232   // We can either adjust the ObjectMonitor reference and then add the
233   // offset or we can adjust the offset that is added to the ObjectMonitor
234   // reference. The latter avoids an AGI (Address Generation Interlock)
235   // stall so the helper macro adjusts the offset value that is returned
236   // to the ObjectMonitor reference manipulation code:
237   //
238   #define OM_OFFSET_NO_MONITOR_VALUE_TAG(f) \
239     ((in_bytes(ObjectMonitor::f ## _offset())) - markWord::monitor_value)
240 
< prev index next >