310 // Point to the last handle mark
311 HandleMark* _last_handle_mark;
312
313 // The parity of the last strong_roots iteration in which this thread was
314 // claimed as a task.
315 int _oops_do_parity;
316
317 // Support for GlobalCounter
318 private:
319 volatile uintx _rcu_counter;
320 public:
321 volatile uintx* get_rcu_counter() {
322 return &_rcu_counter;
323 }
324
325 public:
326 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; }
327 HandleMark* last_handle_mark() const { return _last_handle_mark; }
328 private:
329
330 // debug support for checking if code does allow safepoints or not
331 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
332 // mutex, or blocking on an object synchronizer (Java locking).
333 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
334 // If !allow_allocation(), then an assertion failure will happen during allocation
335 // (Hence, !allow_safepoint() => !allow_allocation()).
336 //
337 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
338 //
339 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
340 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
341
342 // Used by SkipGCALot class.
343 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
344
345 friend class NoAllocVerifier;
346 friend class NoSafepointVerifier;
347 friend class PauseNoSafepointVerifier;
348 friend class GCLocker;
|
310 // Point to the last handle mark
311 HandleMark* _last_handle_mark;
312
313 // The parity of the last strong_roots iteration in which this thread was
314 // claimed as a task.
315 int _oops_do_parity;
316
317 // Support for GlobalCounter
318 private:
319 volatile uintx _rcu_counter;
320 public:
321 volatile uintx* get_rcu_counter() {
322 return &_rcu_counter;
323 }
324
325 public:
326 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; }
327 HandleMark* last_handle_mark() const { return _last_handle_mark; }
328 private:
329
330 #ifdef ASSERT
331 void* _missed_ic_stub_refill_mark;
332
333 public:
334 void* missed_ic_stub_refill_mark() {
335 return _missed_ic_stub_refill_mark;
336 }
337
338 void set_missed_ic_stub_refill_mark(void* mark) {
339 _missed_ic_stub_refill_mark = mark;
340 }
341 #endif
342
343 private:
344
345 // debug support for checking if code does allow safepoints or not
346 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
347 // mutex, or blocking on an object synchronizer (Java locking).
348 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
349 // If !allow_allocation(), then an assertion failure will happen during allocation
350 // (Hence, !allow_safepoint() => !allow_allocation()).
351 //
352 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
353 //
354 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
355 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
356
357 // Used by SkipGCALot class.
358 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
359
360 friend class NoAllocVerifier;
361 friend class NoSafepointVerifier;
362 friend class PauseNoSafepointVerifier;
363 friend class GCLocker;
|