400
401 JFR_ONLY(DEFINE_THREAD_LOCAL_FIELD_JFR;) // Thread-local data for jfr
402
403 int _vm_operation_started_count; // VM_Operation support
404 int _vm_operation_completed_count; // VM_Operation support
405
406 ObjectMonitor* _current_pending_monitor; // ObjectMonitor this thread
407 // is waiting to lock
408 bool _current_pending_monitor_is_from_java; // locking is from Java code
409
410 // ObjectMonitor on which this thread called Object.wait()
411 ObjectMonitor* _current_waiting_monitor;
412
413 // Private thread-local objectmonitor list - a simple cache organized as a SLL.
414 public:
415 ObjectMonitor* omFreeList;
416 int omFreeCount; // length of omFreeList
417 int omFreeProvision; // reload chunk size
418 ObjectMonitor* omInUseList; // SLL to track monitors in circulation
419 int omInUseCount; // length of omInUseList
420
421 #ifdef ASSERT
422 private:
423 volatile uint64_t _visited_for_critical_count;
424
425 public:
426 void set_visited_for_critical_count(uint64_t safepoint_id) {
427 assert(_visited_for_critical_count == 0, "Must be reset before set");
428 assert((safepoint_id & 0x1) == 1, "Must be odd");
429 _visited_for_critical_count = safepoint_id;
430 }
431 void reset_visited_for_critical_count(uint64_t safepoint_id) {
432 assert(_visited_for_critical_count == safepoint_id, "Was not visited");
433 _visited_for_critical_count = 0;
434 }
435 bool was_visited_for_critical_count(uint64_t safepoint_id) const {
436 return _visited_for_critical_count == safepoint_id;
437 }
438 #endif
439
|
400
401 JFR_ONLY(DEFINE_THREAD_LOCAL_FIELD_JFR;) // Thread-local data for jfr
402
403 int _vm_operation_started_count; // VM_Operation support
404 int _vm_operation_completed_count; // VM_Operation support
405
406 ObjectMonitor* _current_pending_monitor; // ObjectMonitor this thread
407 // is waiting to lock
408 bool _current_pending_monitor_is_from_java; // locking is from Java code
409
410 // ObjectMonitor on which this thread called Object.wait()
411 ObjectMonitor* _current_waiting_monitor;
412
413 // Private thread-local objectmonitor list - a simple cache organized as a SLL.
414 public:
415 ObjectMonitor* omFreeList;
416 int omFreeCount; // length of omFreeList
417 int omFreeProvision; // reload chunk size
418 ObjectMonitor* omInUseList; // SLL to track monitors in circulation
419 int omInUseCount; // length of omInUseList
420 volatile bool omShouldDeflateIdleMonitors; // should deflate idle monitors
421
422 #ifdef ASSERT
423 private:
424 volatile uint64_t _visited_for_critical_count;
425
426 public:
427 void set_visited_for_critical_count(uint64_t safepoint_id) {
428 assert(_visited_for_critical_count == 0, "Must be reset before set");
429 assert((safepoint_id & 0x1) == 1, "Must be odd");
430 _visited_for_critical_count = safepoint_id;
431 }
432 void reset_visited_for_critical_count(uint64_t safepoint_id) {
433 assert(_visited_for_critical_count == safepoint_id, "Was not visited");
434 _visited_for_critical_count = 0;
435 }
436 bool was_visited_for_critical_count(uint64_t safepoint_id) const {
437 return _visited_for_critical_count == safepoint_id;
438 }
439 #endif
440
|