< prev index next >

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

Print this page
rev 12906 : [mq]: gc_interface

*** 23,37 **** --- 23,39 ---- */ #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,210 **** 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; --- 188,197 ----
*** 234,243 **** --- 221,238 ---- 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 >