238 239 // Point to the last handle mark 240 HandleMark* _last_handle_mark; 241 242 // The parity of the last strong_roots iteration in which this thread was 243 // claimed as a task. 244 jint _oops_do_parity; 245 246 public: 247 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; } 248 HandleMark* last_handle_mark() const { return _last_handle_mark; } 249 private: 250 251 // debug support for checking if code does allow safepoints or not 252 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on 253 // mutex, or blocking on an object synchronizer (Java locking). 254 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases 255 // If !allow_allocation(), then an assertion failure will happen during allocation 256 // (Hence, !allow_safepoint() => !allow_allocation()). 257 // 258 // The two classes No_Safepoint_Verifier and No_Allocation_Verifier are used to set these counters. 259 // 260 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen 261 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops. 262 263 // Used by SkipGCALot class. 264 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot? 265 266 friend class No_Alloc_Verifier; 267 friend class No_Safepoint_Verifier; 268 friend class Pause_No_Safepoint_Verifier; 269 friend class GC_locker; 270 271 ThreadLocalAllocBuffer _tlab; // Thread-local eden 272 jlong _allocated_bytes; // Cumulative number of bytes allocated on 273 // the Java heap 274 275 mutable TRACE_DATA _trace_data; // Thread-local data for tracing 276 277 ThreadExt _ext; 278 279 int _vm_operation_started_count; // VM_Operation support 280 int _vm_operation_completed_count; // VM_Operation support 281 282 ObjectMonitor* _current_pending_monitor; // ObjectMonitor this thread 283 // is waiting to lock 284 bool _current_pending_monitor_is_from_java; // locking is from Java code 285 286 // ObjectMonitor on which this thread called Object.wait() 287 ObjectMonitor* _current_waiting_monitor; 288 289 // Private thread-local objectmonitor list - a simple cache organized as a SLL. | 238 239 // Point to the last handle mark 240 HandleMark* _last_handle_mark; 241 242 // The parity of the last strong_roots iteration in which this thread was 243 // claimed as a task. 244 jint _oops_do_parity; 245 246 public: 247 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; } 248 HandleMark* last_handle_mark() const { return _last_handle_mark; } 249 private: 250 251 // debug support for checking if code does allow safepoints or not 252 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on 253 // mutex, or blocking on an object synchronizer (Java locking). 254 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases 255 // If !allow_allocation(), then an assertion failure will happen during allocation 256 // (Hence, !allow_safepoint() => !allow_allocation()). 257 // 258 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters. 259 // 260 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen 261 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops. 262 263 // Used by SkipGCALot class. 264 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot? 265 266 friend class NoAllocVerifier; 267 friend class NoSafepointVerifier; 268 friend class PauseNoSafepointVerifier; 269 friend class GCLocker; 270 271 ThreadLocalAllocBuffer _tlab; // Thread-local eden 272 jlong _allocated_bytes; // Cumulative number of bytes allocated on 273 // the Java heap 274 275 mutable TRACE_DATA _trace_data; // Thread-local data for tracing 276 277 ThreadExt _ext; 278 279 int _vm_operation_started_count; // VM_Operation support 280 int _vm_operation_completed_count; // VM_Operation support 281 282 ObjectMonitor* _current_pending_monitor; // ObjectMonitor this thread 283 // is waiting to lock 284 bool _current_pending_monitor_is_from_java; // locking is from Java code 285 286 // ObjectMonitor on which this thread called Object.wait() 287 ObjectMonitor* _current_waiting_monitor; 288 289 // Private thread-local objectmonitor list - a simple cache organized as a SLL. |