104 template(DumpHashtable) \ |
104 template(DumpHashtable) \ |
105 template(DumpTouchedMethods) \ |
105 template(DumpTouchedMethods) \ |
106 template(MarkActiveNMethods) \ |
106 template(MarkActiveNMethods) \ |
107 template(PrintCompileQueue) \ |
107 template(PrintCompileQueue) \ |
108 template(PrintClassHierarchy) \ |
108 template(PrintClassHierarchy) \ |
|
109 template(ThreadSuspend) \ |
|
110 template(CTWThreshold) \ |
|
111 template(ThreadsSuspendJVMTI) \ |
|
112 template(ICBufferFull) \ |
|
113 template(ScavengeMonitors) \ |
109 |
114 |
110 class VM_Operation: public CHeapObj<mtInternal> { |
115 class VM_Operation: public CHeapObj<mtInternal> { |
111 public: |
116 public: |
112 enum Mode { |
117 enum Mode { |
113 _safepoint, // blocking, safepoint, vm_op C-heap allocated |
118 _safepoint, // blocking, safepoint, vm_op C-heap allocated |
236 VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; } |
241 VM_ClearICs(bool preserve_static_stubs) { _preserve_static_stubs = preserve_static_stubs; } |
237 void doit(); |
242 void doit(); |
238 VMOp_Type type() const { return VMOp_ClearICs; } |
243 VMOp_Type type() const { return VMOp_ClearICs; } |
239 }; |
244 }; |
240 |
245 |
241 // dummy vm op, evaluated just to force a safepoint |
246 // empty vm op, evaluated just to force a safepoint |
242 class VM_ForceSafepoint: public VM_Operation { |
247 class VM_ForceSafepoint: public VM_Operation { |
243 public: |
248 public: |
244 VM_ForceSafepoint() {} |
|
245 void doit() {} |
249 void doit() {} |
246 VMOp_Type type() const { return VMOp_ForceSafepoint; } |
250 VMOp_Type type() const { return VMOp_ForceSafepoint; } |
247 }; |
251 }; |
248 |
252 |
249 // dummy vm op, evaluated just to force a safepoint |
253 // empty vm op, when forcing a safepoint to suspend a thread |
250 class VM_ForceAsyncSafepoint: public VM_Operation { |
254 class VM_ThreadSuspend: public VM_ForceSafepoint { |
251 public: |
255 public: |
252 VM_ForceAsyncSafepoint() {} |
256 VMOp_Type type() const { return VMOp_ThreadSuspend; } |
253 void doit() {} |
257 }; |
254 VMOp_Type type() const { return VMOp_ForceAsyncSafepoint; } |
258 |
|
259 // empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper |
|
260 class VM_CTWThreshold: public VM_ForceSafepoint { |
|
261 public: |
|
262 VMOp_Type type() const { return VMOp_CTWThreshold; } |
|
263 }; |
|
264 |
|
265 // empty vm op, when forcing a safepoint to suspend threads from jvmti |
|
266 class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint { |
|
267 public: |
|
268 VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; } |
|
269 }; |
|
270 |
|
271 // empty vm op, when forcing a safepoint due to inline cache buffers being full |
|
272 class VM_ICBufferFull: public VM_ForceSafepoint { |
|
273 public: |
|
274 VMOp_Type type() const { return VMOp_ICBufferFull; } |
|
275 }; |
|
276 |
|
277 // empty asynchronous vm op, when forcing a safepoint to scavenge monitors |
|
278 class VM_ScavengeMonitors: public VM_ForceSafepoint { |
|
279 public: |
|
280 VMOp_Type type() const { return VMOp_ScavengeMonitors; } |
255 Mode evaluation_mode() const { return _async_safepoint; } |
281 Mode evaluation_mode() const { return _async_safepoint; } |
256 bool is_cheap_allocated() const { return true; } |
282 bool is_cheap_allocated() const { return true; } |
257 }; |
283 }; |
258 |
284 |
259 class VM_Deoptimize: public VM_Operation { |
285 class VM_Deoptimize: public VM_Operation { |