< prev index next >

src/hotspot/share/gc/g1/g1SATBMarkQueueSet.cpp

Print this page
rev 55389 : [mq]: satb_lock_free


  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/g1CollectedHeap.inline.hpp"
  27 #include "gc/g1/g1SATBMarkQueueSet.hpp"
  28 #include "gc/g1/g1ThreadLocalData.hpp"
  29 #include "gc/g1/heapRegion.hpp"
  30 #include "gc/shared/satbMarkQueue.hpp"
  31 #include "oops/oop.hpp"
  32 #include "utilities/debug.hpp"
  33 #include "utilities/globalDefinitions.hpp"
  34 
  35 G1SATBMarkQueueSet::G1SATBMarkQueueSet() : _g1h(NULL) {}
  36 
  37 void G1SATBMarkQueueSet::initialize(G1CollectedHeap* g1h,
  38                                     Monitor* cbl_mon,
  39                                     BufferNode::Allocator* allocator,
  40                                     size_t process_completed_buffers_threshold,
  41                                     uint buffer_enqueue_threshold_percentage) {
  42   SATBMarkQueueSet::initialize(cbl_mon,
  43                                allocator,
  44                                process_completed_buffers_threshold,
  45                                buffer_enqueue_threshold_percentage);
  46   _g1h = g1h;
  47 }
  48 
  49 void G1SATBMarkQueueSet::handle_zero_index_for_thread(Thread* t) {
  50   G1ThreadLocalData::satb_mark_queue(t).handle_zero_index();
  51 }
  52 
  53 SATBMarkQueue& G1SATBMarkQueueSet::satb_queue_for_thread(Thread* const t) const{
  54   return G1ThreadLocalData::satb_mark_queue(t);
  55 }
  56 
  57 // Return true if a SATB buffer entry refers to an object that
  58 // requires marking.
  59 //
  60 // The entry must point into the G1 heap.  In particular, it must not
  61 // be a NULL pointer.  NULL pointers are pre-filtered and never
  62 // inserted into a SATB buffer.
  63 //




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc/g1/g1CollectedHeap.inline.hpp"
  27 #include "gc/g1/g1SATBMarkQueueSet.hpp"
  28 #include "gc/g1/g1ThreadLocalData.hpp"
  29 #include "gc/g1/heapRegion.hpp"
  30 #include "gc/shared/satbMarkQueue.hpp"
  31 #include "oops/oop.hpp"
  32 #include "utilities/debug.hpp"
  33 #include "utilities/globalDefinitions.hpp"
  34 
  35 G1SATBMarkQueueSet::G1SATBMarkQueueSet() : _g1h(NULL) {}
  36 
  37 void G1SATBMarkQueueSet::initialize(G1CollectedHeap* g1h,

  38                                     BufferNode::Allocator* allocator,
  39                                     size_t process_completed_buffers_threshold,
  40                                     uint buffer_enqueue_threshold_percentage) {
  41   SATBMarkQueueSet::initialize(allocator,

  42                                process_completed_buffers_threshold,
  43                                buffer_enqueue_threshold_percentage);
  44   _g1h = g1h;
  45 }
  46 
  47 void G1SATBMarkQueueSet::handle_zero_index_for_thread(Thread* t) {
  48   G1ThreadLocalData::satb_mark_queue(t).handle_zero_index();
  49 }
  50 
  51 SATBMarkQueue& G1SATBMarkQueueSet::satb_queue_for_thread(Thread* const t) const{
  52   return G1ThreadLocalData::satb_mark_queue(t);
  53 }
  54 
  55 // Return true if a SATB buffer entry refers to an object that
  56 // requires marking.
  57 //
  58 // The entry must point into the G1 heap.  In particular, it must not
  59 // be a NULL pointer.  NULL pointers are pre-filtered and never
  60 // inserted into a SATB buffer.
  61 //


< prev index next >