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