86
87 bool is_card_claimed(size_t card_index) {
88 jbyte val = _byte_map[card_index];
89 return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
90 }
91
92 inline void set_card_claimed(size_t card_index);
93
94 void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
95 void g1_mark_as_young(const MemRegion& mr);
96
97 bool mark_card_deferred(size_t card_index);
98
99 bool is_card_deferred(size_t card_index) {
100 jbyte val = _byte_map[card_index];
101 return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
102 }
103 virtual void write_ref_nmethod_pre(oop* dst, nmethod* nm);
104 virtual void write_ref_nmethod_post(oop* dst, nmethod* nm);
105
106 };
107
108 template<>
109 struct BarrierSet::GetName<G1SATBCardTableModRefBS> {
110 static const BarrierSet::Name value = BarrierSet::G1SATBCT;
111 };
112
113 class G1SATBCardTableLoggingModRefBSChangedListener : public G1MappingChangedListener {
114 private:
115 G1SATBCardTableLoggingModRefBS* _card_table;
116 public:
117 G1SATBCardTableLoggingModRefBSChangedListener() : _card_table(NULL) { }
118
119 void set_card_table(G1SATBCardTableLoggingModRefBS* card_table) { _card_table = card_table; }
120
121 virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
122 };
123
124 // Adds card-table logging to the post-barrier.
125 // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.
|
86
87 bool is_card_claimed(size_t card_index) {
88 jbyte val = _byte_map[card_index];
89 return (val & (clean_card_mask_val() | claimed_card_val())) == claimed_card_val();
90 }
91
92 inline void set_card_claimed(size_t card_index);
93
94 void verify_g1_young_region(MemRegion mr) PRODUCT_RETURN;
95 void g1_mark_as_young(const MemRegion& mr);
96
97 bool mark_card_deferred(size_t card_index);
98
99 bool is_card_deferred(size_t card_index) {
100 jbyte val = _byte_map[card_index];
101 return (val & (clean_card_mask_val() | deferred_card_val())) == deferred_card_val();
102 }
103 virtual void write_ref_nmethod_pre(oop* dst, nmethod* nm);
104 virtual void write_ref_nmethod_post(oop* dst, nmethod* nm);
105
106 virtual void keep_alive_barrier(oop obj);
107
108
109 };
110
111 template<>
112 struct BarrierSet::GetName<G1SATBCardTableModRefBS> {
113 static const BarrierSet::Name value = BarrierSet::G1SATBCT;
114 };
115
116 class G1SATBCardTableLoggingModRefBSChangedListener : public G1MappingChangedListener {
117 private:
118 G1SATBCardTableLoggingModRefBS* _card_table;
119 public:
120 G1SATBCardTableLoggingModRefBSChangedListener() : _card_table(NULL) { }
121
122 void set_card_table(G1SATBCardTableLoggingModRefBS* card_table) { _card_table = card_table; }
123
124 virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled);
125 };
126
127 // Adds card-table logging to the post-barrier.
128 // Usual invariant: all dirty cards are logged in the DirtyCardQueueSet.
|