< prev index next >

src/hotspot/share/gc/g1/satbMarkQueue.hpp

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -47,10 +47,13 @@
 
 private:
   // Filter out unwanted entries from the buffer.
   void filter();
 
+  template <class HeapType>
+  void filter_impl();
+
 public:
   SATBMarkQueue(SATBMarkQueueSet* qset, bool permanent = false);
 
   // Process queue entries and free resources.
   void flush();

@@ -99,11 +102,11 @@
 
   void initialize(Monitor* cbl_mon, Mutex* fl_lock,
                   int process_completed_threshold,
                   Mutex* lock);
 
-  static void handle_zero_index_for_thread(JavaThread* t);
+  virtual SATBMarkQueue& satb_queue_for_thread(Thread* t) = 0;
 
   // Apply "set_active(active)" to all SATB queues in the set. It should be
   // called only with the world stopped. The method will assert that the
   // SATB queues of all threads it visits, as well as the SATB queue
   // set itself, has an active value same as expected_active.

@@ -127,6 +130,12 @@
 
   // If a marking is being abandoned, reset any unprocessed log buffers.
   void abandon_partial_marking();
 };
 
+class G1SATBMarkQueueSet : public SATBMarkQueueSet {
+public:
+  static void handle_zero_index_for_thread(JavaThread* t);
+  virtual SATBMarkQueue& satb_queue_for_thread(Thread* t);
+};
+
 #endif // SHARE_VM_GC_G1_SATBMARKQUEUE_HPP
< prev index next >