hotspot/src/share/vm/gc_implementation/g1/satbQueue.hpp
changeset 30268 d28a9aa10804
parent 30255 f43e306ec51e
child 30279 c3b8486760aa
equal deleted inserted replaced
30267:e35e0c092042 30268:d28a9aa10804
    73   static void print(const char* name, void** buf, size_t index, size_t sz);
    73   static void print(const char* name, void** buf, size_t index, size_t sz);
    74 #endif // PRODUCT
    74 #endif // PRODUCT
    75 };
    75 };
    76 
    76 
    77 class SATBMarkQueueSet: public PtrQueueSet {
    77 class SATBMarkQueueSet: public PtrQueueSet {
    78   ObjectClosure** _closures;  // One per ParGCThread.
       
    79 
       
    80   ObjPtrQueue _shared_satb_queue;
    78   ObjPtrQueue _shared_satb_queue;
    81 
    79 
    82 #ifdef ASSERT
    80 #ifdef ASSERT
    83   void dump_active_states(bool expected_active);
    81   void dump_active_states(bool expected_active);
    84   void verify_active_states(bool expected_active);
    82   void verify_active_states(bool expected_active);
   100   void set_active_all_threads(bool active, bool expected_active);
    98   void set_active_all_threads(bool active, bool expected_active);
   101 
    99 
   102   // Filter all the currently-active SATB buffers.
   100   // Filter all the currently-active SATB buffers.
   103   void filter_thread_buffers();
   101   void filter_thread_buffers();
   104 
   102 
   105   // Register closure for the given worker thread. The "apply_closure_to_completed_buffer"
       
   106   // method will apply this closure to a completed buffer, and "iterate_closure_all_threads"
       
   107   // applies it to partially-filled buffers (the latter should only be done
       
   108   // with the world stopped).
       
   109   void set_closure(uint worker, ObjectClosure* closure);
       
   110 
       
   111   // If there exists some completed buffer, pop it, then apply the
   103   // If there exists some completed buffer, pop it, then apply the
   112   // registered closure to all its elements, and return true.  If no
   104   // closure to all its elements, and return true.  If no
   113   // completed buffers exist, return false.
   105   // completed buffers exist, return false.
   114   bool apply_closure_to_completed_buffer(uint worker);
   106   bool apply_closure_to_completed_buffer(ObjectClosure* closure);
   115 
   107 
   116   // Apply the given closure on enqueued and currently-active buffers
   108   // Apply the given closure on enqueued and currently-active buffers
   117   // respectively. Both methods are read-only, i.e., they do not
   109   // respectively. Both methods are read-only, i.e., they do not
   118   // modify any of the buffers.
   110   // modify any of the buffers.
   119   void iterate_completed_buffers_read_only(ObjectClosure* cl);
   111   void iterate_completed_buffers_read_only(ObjectClosure* cl);