178 // Only perform a PerfData operation if the PerfData object has been
179 // allocated and if the PerfDataManager has not freed the PerfData
180 // objects which can happen at normal VM shutdown.
181 //
182 #define OM_PERFDATA_OP(f, op_str) \
183 do { \
184 if (ObjectMonitor::_sync_ ## f != NULL && \
185 PerfDataManager::has_PerfData()) { \
186 ObjectMonitor::_sync_ ## f->op_str; \
187 } \
188 } while (0)
189
190 static PerfCounter * _sync_ContendedLockAttempts;
191 static PerfCounter * _sync_FutileWakeups;
192 static PerfCounter * _sync_Parks;
193 static PerfCounter * _sync_Notifications;
194 static PerfCounter * _sync_Inflations;
195 static PerfCounter * _sync_Deflations;
196 static PerfLongVariable * _sync_MonExtant;
197
198 static int Knob_ExitRelease;
199 static int Knob_InlineNotify;
200 static int Knob_Verbose;
201 static int Knob_VerifyInUse;
202 static int Knob_VerifyMatch;
203 static int Knob_SpinLimit;
204
205 void* operator new (size_t size) throw();
206 void* operator new[] (size_t size) throw();
207 void operator delete(void* p);
208 void operator delete[] (void *p);
209
210 // TODO-FIXME: the "offset" routines should return a type of off_t instead of int ...
211 // ByteSize would also be an appropriate type.
212 static int header_offset_in_bytes() { return offset_of(ObjectMonitor, _header); }
213 static int object_offset_in_bytes() { return offset_of(ObjectMonitor, _object); }
214 static int owner_offset_in_bytes() { return offset_of(ObjectMonitor, _owner); }
215 static int count_offset_in_bytes() { return offset_of(ObjectMonitor, _count); }
216 static int recursions_offset_in_bytes() { return offset_of(ObjectMonitor, _recursions); }
217 static int cxq_offset_in_bytes() { return offset_of(ObjectMonitor, _cxq); }
218 static int succ_offset_in_bytes() { return offset_of(ObjectMonitor, _succ); }
|
178 // Only perform a PerfData operation if the PerfData object has been
179 // allocated and if the PerfDataManager has not freed the PerfData
180 // objects which can happen at normal VM shutdown.
181 //
182 #define OM_PERFDATA_OP(f, op_str) \
183 do { \
184 if (ObjectMonitor::_sync_ ## f != NULL && \
185 PerfDataManager::has_PerfData()) { \
186 ObjectMonitor::_sync_ ## f->op_str; \
187 } \
188 } while (0)
189
190 static PerfCounter * _sync_ContendedLockAttempts;
191 static PerfCounter * _sync_FutileWakeups;
192 static PerfCounter * _sync_Parks;
193 static PerfCounter * _sync_Notifications;
194 static PerfCounter * _sync_Inflations;
195 static PerfCounter * _sync_Deflations;
196 static PerfLongVariable * _sync_MonExtant;
197
198 static int Knob_InlineNotify;
199 static int Knob_Verbose;
200 static int Knob_VerifyInUse;
201 static int Knob_VerifyMatch;
202 static int Knob_SpinLimit;
203
204 void* operator new (size_t size) throw();
205 void* operator new[] (size_t size) throw();
206 void operator delete(void* p);
207 void operator delete[] (void *p);
208
209 // TODO-FIXME: the "offset" routines should return a type of off_t instead of int ...
210 // ByteSize would also be an appropriate type.
211 static int header_offset_in_bytes() { return offset_of(ObjectMonitor, _header); }
212 static int object_offset_in_bytes() { return offset_of(ObjectMonitor, _object); }
213 static int owner_offset_in_bytes() { return offset_of(ObjectMonitor, _owner); }
214 static int count_offset_in_bytes() { return offset_of(ObjectMonitor, _count); }
215 static int recursions_offset_in_bytes() { return offset_of(ObjectMonitor, _recursions); }
216 static int cxq_offset_in_bytes() { return offset_of(ObjectMonitor, _cxq); }
217 static int succ_offset_in_bytes() { return offset_of(ObjectMonitor, _succ); }
|