< 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 >