< prev index next >

src/share/vm/runtime/vm_operations.hpp

Print this page
rev 13387 : [mq]: parallel_sp_cleaning.patch

@@ -196,10 +196,30 @@
            evaluation_mode() == _async_safepoint;
   }
 
   static const char* mode_to_string(Mode mode);
 
+  // Safepoint cleanup
+  // Return true if this VM_Operation takes care of idle monitor deflation.
+  // Idle monitor deflation is usually done by the safepoint cleanup phase
+  // in SafepointSynchronize::do_cleanup_tasks(). However, a VM_Operation
+  // may want to take care of this itself, for example if a GC operation
+  // scans the thread stack anyway, it probably can piggy-back monitor
+  // deflation. Note that this is only possible if the oop marks are preserved
+  // during the VM operation (for example, most current GCs *don't* preserve
+  // the mark word, but displace it and temporarily use the mark word as
+  // forwarding pointer).
+  virtual bool deflates_idle_monitors() { return false; }
+
+  // Return true if this VM_Operation takes care of nmethod marking.
+  // NMethod marking is usually done by the safepoint cleanup phase
+  // in SafepointSynchronize::do_cleanup_tasks(). However, a VM_Operation
+  // may want to take care of this itself, for example if a GC operation
+  // scans the thread stack anyway, it can just as well piggy-back nmethod
+  // marking.
+  virtual bool marks_nmethods() { return false; }
+
   // Debugging
   virtual void print_on_error(outputStream* st) const;
   const char* name() const { return _names[type()]; }
   static const char* name(int type) {
     assert(type >= 0 && type < VMOp_Terminating, "invalid VM operation type");
< prev index next >