diff -r 3fdd343bc5ea -r 34f7d403039f hotspot/src/share/vm/runtime/vm_operations.hpp --- a/hotspot/src/share/vm/runtime/vm_operations.hpp Wed May 24 17:30:45 2017 -0700 +++ b/hotspot/src/share/vm/runtime/vm_operations.hpp Thu May 25 09:38:33 2017 +0200 @@ -106,6 +106,11 @@ template(MarkActiveNMethods) \ template(PrintCompileQueue) \ template(PrintClassHierarchy) \ + template(ThreadSuspend) \ + template(CTWThreshold) \ + template(ThreadsSuspendJVMTI) \ + template(ICBufferFull) \ + template(ScavengeMonitors) \ class VM_Operation: public CHeapObj { public: @@ -238,20 +243,41 @@ VMOp_Type type() const { return VMOp_ClearICs; } }; -// dummy vm op, evaluated just to force a safepoint +// empty vm op, evaluated just to force a safepoint class VM_ForceSafepoint: public VM_Operation { public: - VM_ForceSafepoint() {} void doit() {} VMOp_Type type() const { return VMOp_ForceSafepoint; } }; -// dummy vm op, evaluated just to force a safepoint -class VM_ForceAsyncSafepoint: public VM_Operation { +// empty vm op, when forcing a safepoint to suspend a thread +class VM_ThreadSuspend: public VM_ForceSafepoint { + public: + VMOp_Type type() const { return VMOp_ThreadSuspend; } +}; + +// empty vm op, when forcing a safepoint due to ctw threshold is reached for the sweeper +class VM_CTWThreshold: public VM_ForceSafepoint { public: - VM_ForceAsyncSafepoint() {} - void doit() {} - VMOp_Type type() const { return VMOp_ForceAsyncSafepoint; } + VMOp_Type type() const { return VMOp_CTWThreshold; } +}; + +// empty vm op, when forcing a safepoint to suspend threads from jvmti +class VM_ThreadsSuspendJVMTI: public VM_ForceSafepoint { + public: + VMOp_Type type() const { return VMOp_ThreadsSuspendJVMTI; } +}; + +// empty vm op, when forcing a safepoint due to inline cache buffers being full +class VM_ICBufferFull: public VM_ForceSafepoint { + public: + VMOp_Type type() const { return VMOp_ICBufferFull; } +}; + +// empty asynchronous vm op, when forcing a safepoint to scavenge monitors +class VM_ScavengeMonitors: public VM_ForceSafepoint { + public: + VMOp_Type type() const { return VMOp_ScavengeMonitors; } Mode evaluation_mode() const { return _async_safepoint; } bool is_cheap_allocated() const { return true; } };