227
228 void clear_suspendible_thread() {
229 _suspendible_thread = false;
230 }
231
232 bool is_suspendible_thread() { return _suspendible_thread; }
233 #endif
234
235 private:
236 // Active_handles points to a block of handles
237 JNIHandleBlock* _active_handles;
238
239 // One-element thread local free list
240 JNIHandleBlock* _free_handle_block;
241
242 // Point to the last handle mark
243 HandleMark* _last_handle_mark;
244
245 // The parity of the last strong_roots iteration in which this thread was
246 // claimed as a task.
247 jint _oops_do_parity;
248
249 public:
250 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; }
251 HandleMark* last_handle_mark() const { return _last_handle_mark; }
252 private:
253
254 // debug support for checking if code does allow safepoints or not
255 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
256 // mutex, or blocking on an object synchronizer (Java locking).
257 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
258 // If !allow_allocation(), then an assertion failure will happen during allocation
259 // (Hence, !allow_safepoint() => !allow_allocation()).
260 //
261 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
262 //
263 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
264 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
265
266 // Used by SkipGCALot class.
267 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
|
227
228 void clear_suspendible_thread() {
229 _suspendible_thread = false;
230 }
231
232 bool is_suspendible_thread() { return _suspendible_thread; }
233 #endif
234
235 private:
236 // Active_handles points to a block of handles
237 JNIHandleBlock* _active_handles;
238
239 // One-element thread local free list
240 JNIHandleBlock* _free_handle_block;
241
242 // Point to the last handle mark
243 HandleMark* _last_handle_mark;
244
245 // The parity of the last strong_roots iteration in which this thread was
246 // claimed as a task.
247 int _oops_do_parity;
248
249 public:
250 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; }
251 HandleMark* last_handle_mark() const { return _last_handle_mark; }
252 private:
253
254 // debug support for checking if code does allow safepoints or not
255 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
256 // mutex, or blocking on an object synchronizer (Java locking).
257 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
258 // If !allow_allocation(), then an assertion failure will happen during allocation
259 // (Hence, !allow_safepoint() => !allow_allocation()).
260 //
261 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
262 //
263 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
264 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
265
266 // Used by SkipGCALot class.
267 NOT_PRODUCT(bool _skip_gcalot;) // Should we elide gc-a-lot?
|