< prev index next >

src/share/vm/gc/shared/collectedHeap.hpp

Print this page
rev 13265 : 8180932: Parallelize safepoint cleanup
Summary: Provide infrastructure to do safepoint cleanup tasks using parallel worker threads
Reviewed-by: dholmes, rehn, dcubed, thartmann

@@ -48,10 +48,11 @@
 class GCTracer;
 class MetaspaceSummary;
 class Thread;
 class ThreadClosure;
 class VirtualSpaceSummary;
+class WorkGang;
 class nmethod;
 
 class GCMessage : public FormatBuffer<1024> {
  public:
   bool is_before;

@@ -601,10 +602,20 @@
   //
   // Returns true when the phase is reached.  Returns false for an
   // unknown phase.  The default implementation returns false.
   virtual bool request_concurrent_phase(const char* phase);
 
+  // Provides a thread pool to SafepointSynchronize to use
+  // for parallel safepoint cleanup.
+  // GCs that use a GC worker thread pool may want to share
+  // it for use during safepoint cleanup. This is only possible
+  // if the GC can pause and resume concurrent work (e.g. G1
+  // concurrent marking) for an intermittent non-GC safepoint.
+  // If this method returns NULL, SafepointSynchronize will
+  // perform cleanup tasks serially in the VMThread.
+  virtual WorkGang* get_safepoint_workers() { return NULL; }
+
   // Non product verification and debugging.
 #ifndef PRODUCT
   // Support for PromotionFailureALot.  Return true if it's time to cause a
   // promotion failure.  The no-argument version uses
   // this->_promotion_failure_alot_count as the counter.
< prev index next >