20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
27
28 #include "gc_implementation/g1/g1RegionToSpaceMapper.hpp"
29 #include "memory/cardTableModRefBS.hpp"
30 #include "memory/memRegion.hpp"
31 #include "oops/oop.inline.hpp"
32 #include "utilities/macros.hpp"
33
34 class DirtyCardQueueSet;
35 class G1SATBCardTableLoggingModRefBS;
36
37 // This barrier is specialized to use a logging barrier to support
38 // snapshot-at-the-beginning marking.
39
40 class G1SATBCardTableModRefBS: public CardTableModRefBSForCTRS {
41 protected:
42 enum G1CardValues {
43 g1_young_gen = CT_MR_BS_last_reserved << 1
44 };
45
46 public:
47 static int g1_young_card_val() { return g1_young_gen; }
48
49 // Add "pre_val" to a set of objects that may have been disconnected from the
50 // pre-marking object graph.
51 static void enqueue(oop pre_val);
52
53 G1SATBCardTableModRefBS(MemRegion whole_heap);
54
55 bool is_a(BarrierSet::Name bsn) {
56 return bsn == BarrierSet::G1SATBCT || CardTableModRefBS::is_a(bsn);
57 }
58
59 virtual bool has_write_ref_pre_barrier() { return true; }
60
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_G1SATBCARDTABLEMODREFBS_HPP
27
28 #include "gc_implementation/g1/g1RegionToSpaceMapper.hpp"
29 #include "memory/cardTableModRefBS.hpp"
30 #include "memory/memRegion.hpp"
31 #include "oops/oop.inline.hpp"
32 #include "utilities/macros.hpp"
33
34 class DirtyCardQueueSet;
35 class G1SATBCardTableLoggingModRefBS;
36
37 // This barrier is specialized to use a logging barrier to support
38 // snapshot-at-the-beginning marking.
39
40 class G1SATBCardTableModRefBS: public CardTableModRefBS {
41 protected:
42 enum G1CardValues {
43 g1_young_gen = CT_MR_BS_last_reserved << 1
44 };
45
46 public:
47 static int g1_young_card_val() { return g1_young_gen; }
48
49 // Add "pre_val" to a set of objects that may have been disconnected from the
50 // pre-marking object graph.
51 static void enqueue(oop pre_val);
52
53 G1SATBCardTableModRefBS(MemRegion whole_heap);
54
55 bool is_a(BarrierSet::Name bsn) {
56 return bsn == BarrierSet::G1SATBCT || CardTableModRefBS::is_a(bsn);
57 }
58
59 virtual bool has_write_ref_pre_barrier() { return true; }
60
|