< prev index next >

src/share/vm/gc/parallel/parallelScavengeHeap.hpp

Print this page
rev 12906 : [mq]: gc_interface

@@ -23,15 +23,17 @@
  */
 
 #ifndef SHARE_VM_GC_PARALLEL_PARALLELSCAVENGEHEAP_HPP
 #define SHARE_VM_GC_PARALLEL_PARALLELSCAVENGEHEAP_HPP
 
+#include "gc/parallel/psCardTable.hpp"
 #include "gc/parallel/generationSizer.hpp"
 #include "gc/parallel/objectStartArray.hpp"
 #include "gc/parallel/psGCAdaptivePolicyCounters.hpp"
 #include "gc/parallel/psOldGen.hpp"
 #include "gc/parallel/psYoungGen.hpp"
+#include "gc/shared/cardTableModRefBS.hpp"
 #include "gc/shared/collectedHeap.hpp"
 #include "gc/shared/collectorPolicy.hpp"
 #include "gc/shared/gcPolicyCounters.hpp"
 #include "gc/shared/gcWhen.hpp"
 #include "gc/shared/strongRootsScope.hpp"

@@ -186,25 +188,10 @@
 
   size_t tlab_capacity(Thread* thr) const;
   size_t tlab_used(Thread* thr) const;
   size_t unsafe_max_tlab_alloc(Thread* thr) const;
 
-  // Can a compiler initialize a new object without store barriers?
-  // This permission only extends from the creation of a new object
-  // via a TLAB up to the first subsequent safepoint.
-  virtual bool can_elide_tlab_store_barriers() const {
-    return true;
-  }
-
-  virtual bool card_mark_must_follow_store() const {
-    return false;
-  }
-
-  // Return true if we don't we need a store barrier for
-  // initializing stores to an object at this address.
-  virtual bool can_elide_initializing_store_barrier(oop new_obj);
-
   void object_iterate(ObjectClosure* cl);
   void safe_object_iterate(ObjectClosure* cl) { object_iterate(cl); }
 
   HeapWord* block_start(const void* addr) const;
   size_t block_size(const HeapWord* addr) const;

@@ -234,10 +221,18 @@
   void record_gen_tops_before_GC() PRODUCT_RETURN;
 
   // Mangle the unused parts of all spaces in the heap
   void gen_mangle_unused_area() PRODUCT_RETURN;
 
+  CardTableModRefBS* barrier_set() {
+    return barrier_set_cast<CardTableModRefBS>(CollectedHeap::barrier_set());
+  }
+
+  PSCardTable* card_table() {
+    return static_cast<PSCardTable*>(barrier_set()->card_table());
+  }
+
   // Call these in sequential code around the processing of strong roots.
   class ParStrongRootsScope : public MarkScope {
    public:
     ParStrongRootsScope();
     ~ParStrongRootsScope();
< prev index next >