63
64 class JvmtiThreadState;
65 class ThreadStatistics;
66 class ConcurrentLocksDump;
67 class ParkEvent;
68 class Parker;
69
70 class ciEnv;
71 class CompileThread;
72 class CompileLog;
73 class CompileTask;
74 class CompileQueue;
75 class CompilerCounters;
76 class vframeArray;
77
78 class DeoptResourceMark;
79 class jvmtiDeferredLocalVariableSet;
80
81 class GCTaskQueue;
82 class ThreadClosure;
83 class IdealGraphPrinter;
84
85 class Metadata;
86 template <class T, MEMFLAGS F> class ChunkedList;
87 typedef ChunkedList<Metadata*, mtInternal> MetadataOnStackBuffer;
88
89 DEBUG_ONLY(class ResourceMark;)
90
91 class WorkerThread;
92
93 // Class hierarchy
94 // - Thread
95 // - JavaThread
96 // - various subclasses eg CompilerThread, ServiceThread
97 // - NonJavaThread
98 // - NamedThread
99 // - VMThread
100 // - ConcurrentGCThread
101 // - WorkerThread
|
63
64 class JvmtiThreadState;
65 class ThreadStatistics;
66 class ConcurrentLocksDump;
67 class ParkEvent;
68 class Parker;
69
70 class ciEnv;
71 class CompileThread;
72 class CompileLog;
73 class CompileTask;
74 class CompileQueue;
75 class CompilerCounters;
76 class vframeArray;
77
78 class DeoptResourceMark;
79 class jvmtiDeferredLocalVariableSet;
80
81 class GCTaskQueue;
82 class ThreadClosure;
83 class ICRefillVerifier;
84 class IdealGraphPrinter;
85
86 class Metadata;
87 template <class T, MEMFLAGS F> class ChunkedList;
88 typedef ChunkedList<Metadata*, mtInternal> MetadataOnStackBuffer;
89
90 DEBUG_ONLY(class ResourceMark;)
91
92 class WorkerThread;
93
94 // Class hierarchy
95 // - Thread
96 // - JavaThread
97 // - various subclasses eg CompilerThread, ServiceThread
98 // - NonJavaThread
99 // - NamedThread
100 // - VMThread
101 // - ConcurrentGCThread
102 // - WorkerThread
|
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.
|
312 HandleMark* _last_handle_mark;
313
314 // The parity of the last strong_roots iteration in which this thread was
315 // claimed as a task.
316 int _oops_do_parity;
317
318 // Support for GlobalCounter
319 private:
320 volatile uintx _rcu_counter;
321 public:
322 volatile uintx* get_rcu_counter() {
323 return &_rcu_counter;
324 }
325
326 public:
327 void set_last_handle_mark(HandleMark* mark) { _last_handle_mark = mark; }
328 HandleMark* last_handle_mark() const { return _last_handle_mark; }
329 private:
330
331 #ifdef ASSERT
332 ICRefillVerifier* _missed_ic_stub_refill_mark;
333
334 public:
335 ICRefillVerifier* missed_ic_stub_refill_mark() {
336 return _missed_ic_stub_refill_mark;
337 }
338
339 void set_missed_ic_stub_refill_mark(ICRefillVerifier* mark) {
340 _missed_ic_stub_refill_mark = mark;
341 }
342 #endif
343
344 private:
345
346 // debug support for checking if code does allow safepoints or not
347 // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
348 // mutex, or blocking on an object synchronizer (Java locking).
349 // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
350 // If !allow_allocation(), then an assertion failure will happen during allocation
351 // (Hence, !allow_safepoint() => !allow_allocation()).
352 //
353 // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
354 //
355 NOT_PRODUCT(int _allow_safepoint_count;) // If 0, thread allow a safepoint to happen
356 debug_only(int _allow_allocation_count;) // If 0, the thread is allowed to allocate oops.
357
358 // Used by SkipGCALot class.
|