398
399 ThreadStatisticalInfo _statistical_info; // Statistics about the thread
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 JvmtiRawMonitor* _current_pending_raw_monitor; // JvmtiRawMonitor this thread
410 // is waiting to lock
411
412
413 // ObjectMonitor on which this thread called Object.wait()
414 ObjectMonitor* _current_waiting_monitor;
415
416 // Per-thread ObjectMonitor lists:
417 public:
418 ObjectMonitor* volatile om_free_list; // SLL of free ObjectMonitors
419 volatile int om_free_count; // # on om_free_list
420 int om_free_provision; // # to try to allocate next
421 ObjectMonitor* volatile om_in_use_list; // SLL of in-use ObjectMonitors
422 volatile int om_in_use_count; // # on om_in_use_list
423
424 #ifdef ASSERT
425 private:
426 volatile uint64_t _visited_for_critical_count;
427
428 public:
429 void set_visited_for_critical_count(uint64_t safepoint_id) {
430 assert(_visited_for_critical_count == 0, "Must be reset before set");
431 assert((safepoint_id & 0x1) == 1, "Must be odd");
432 _visited_for_critical_count = safepoint_id;
433 }
434 void reset_visited_for_critical_count(uint64_t safepoint_id) {
435 assert(_visited_for_critical_count == safepoint_id, "Was not visited");
436 _visited_for_critical_count = 0;
437 }
438 bool was_visited_for_critical_count(uint64_t safepoint_id) const {
439 return _visited_for_critical_count == safepoint_id;
440 }
441 #endif
442
|
398
399 ThreadStatisticalInfo _statistical_info; // Statistics about the thread
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 JvmtiRawMonitor* _current_pending_raw_monitor; // JvmtiRawMonitor this thread
410 // is waiting to lock
411
412
413 // ObjectMonitor on which this thread called Object.wait()
414 ObjectMonitor* _current_waiting_monitor;
415
416 // Per-thread ObjectMonitor lists:
417 public:
418 ObjectMonitor* om_free_list; // SLL of free ObjectMonitors
419 int om_free_count; // # on om_free_list
420 int om_free_provision; // # to try to allocate next
421 ObjectMonitor* om_in_use_list; // SLL of in-use ObjectMonitors
422 int om_in_use_count; // # on om_in_use_list
423
424 #ifdef ASSERT
425 private:
426 volatile uint64_t _visited_for_critical_count;
427
428 public:
429 void set_visited_for_critical_count(uint64_t safepoint_id) {
430 assert(_visited_for_critical_count == 0, "Must be reset before set");
431 assert((safepoint_id & 0x1) == 1, "Must be odd");
432 _visited_for_critical_count = safepoint_id;
433 }
434 void reset_visited_for_critical_count(uint64_t safepoint_id) {
435 assert(_visited_for_critical_count == safepoint_id, "Was not visited");
436 _visited_for_critical_count = 0;
437 }
438 bool was_visited_for_critical_count(uint64_t safepoint_id) const {
439 return _visited_for_critical_count == safepoint_id;
440 }
441 #endif
442
|