122 _verify_regions_notrash,
123
124 // No collection set regions allowed
125 _verify_regions_nocset,
126
127 // No trash and no cset regions allowed
128 _verify_regions_notrash_nocset
129 } VerifyRegions;
130
131 typedef enum {
132 // Disable gc-state verification
133 _verify_gcstate_disable,
134
135 // Nothing is in progress, no forwarded objects
136 _verify_gcstate_stable,
137
138 // Nothing is in progress, some objects are forwarded
139 _verify_gcstate_forwarded,
140
141 // Evacuation is in progress, some objects are forwarded
142 _verify_gcstate_evacuation
143 } VerifyGCState;
144
145 typedef enum {
146 _verify_all_weak_roots,
147 _verify_serial_weak_roots,
148 _verify_concurrent_weak_roots
149 } VerifyWeakRoots;
150
151 struct VerifyOptions {
152 VerifyForwarded _verify_forwarded;
153 VerifyMarked _verify_marked;
154 VerifyCollectionSet _verify_cset;
155 VerifyLiveness _verify_liveness;
156 VerifyRegions _verify_regions;
157 VerifyGCState _verify_gcstate;
158 VerifyWeakRoots _verify_weak_roots;
159
160 VerifyOptions(VerifyForwarded verify_forwarded,
161 VerifyMarked verify_marked,
162 VerifyCollectionSet verify_collection_set,
173
174 private:
175 void verify_at_safepoint(const char *label,
176 VerifyForwarded forwarded,
177 VerifyMarked marked,
178 VerifyCollectionSet cset,
179 VerifyLiveness liveness,
180 VerifyRegions regions,
181 VerifyGCState gcstate,
182 VerifyWeakRoots weakRoots);
183
184 public:
185 ShenandoahVerifier(ShenandoahHeap* heap, MarkBitMap* verification_bitmap) :
186 _heap(heap), _verification_bit_map(verification_bitmap) {};
187
188 void verify_before_concmark();
189 void verify_after_concmark();
190 void verify_before_evacuation();
191 void verify_during_evacuation();
192 void verify_after_evacuation();
193 void verify_before_updaterefs();
194 void verify_after_updaterefs();
195 void verify_before_fullgc();
196 void verify_after_fullgc();
197 void verify_after_degenerated();
198 void verify_generic(VerifyOption option);
199
200 // Roots should only contain to-space oops
201 void verify_roots_in_to_space();
202 void verify_roots_in_to_space_except(ShenandoahRootVerifier::RootTypes types);
203
204 void verify_roots_no_forwarded();
205 void verify_roots_no_forwarded_except(ShenandoahRootVerifier::RootTypes types);
206 };
207
208 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHVERIFIER_HPP
|
122 _verify_regions_notrash,
123
124 // No collection set regions allowed
125 _verify_regions_nocset,
126
127 // No trash and no cset regions allowed
128 _verify_regions_notrash_nocset
129 } VerifyRegions;
130
131 typedef enum {
132 // Disable gc-state verification
133 _verify_gcstate_disable,
134
135 // Nothing is in progress, no forwarded objects
136 _verify_gcstate_stable,
137
138 // Nothing is in progress, some objects are forwarded
139 _verify_gcstate_forwarded,
140
141 // Evacuation is in progress, some objects are forwarded
142 _verify_gcstate_evacuation,
143
144 // Evac-update is in progress, some objects are forwarded
145 _verify_gcstate_evac_update
146 } VerifyGCState;
147
148 typedef enum {
149 _verify_all_weak_roots,
150 _verify_serial_weak_roots,
151 _verify_concurrent_weak_roots
152 } VerifyWeakRoots;
153
154 struct VerifyOptions {
155 VerifyForwarded _verify_forwarded;
156 VerifyMarked _verify_marked;
157 VerifyCollectionSet _verify_cset;
158 VerifyLiveness _verify_liveness;
159 VerifyRegions _verify_regions;
160 VerifyGCState _verify_gcstate;
161 VerifyWeakRoots _verify_weak_roots;
162
163 VerifyOptions(VerifyForwarded verify_forwarded,
164 VerifyMarked verify_marked,
165 VerifyCollectionSet verify_collection_set,
176
177 private:
178 void verify_at_safepoint(const char *label,
179 VerifyForwarded forwarded,
180 VerifyMarked marked,
181 VerifyCollectionSet cset,
182 VerifyLiveness liveness,
183 VerifyRegions regions,
184 VerifyGCState gcstate,
185 VerifyWeakRoots weakRoots);
186
187 public:
188 ShenandoahVerifier(ShenandoahHeap* heap, MarkBitMap* verification_bitmap) :
189 _heap(heap), _verification_bit_map(verification_bitmap) {};
190
191 void verify_before_concmark();
192 void verify_after_concmark();
193 void verify_before_evacuation();
194 void verify_during_evacuation();
195 void verify_after_evacuation();
196 void verify_before_evac_update();
197 void verify_after_evac_update();
198 void verify_before_fullgc();
199 void verify_after_fullgc();
200 void verify_after_degenerated();
201 void verify_generic(VerifyOption option);
202
203 // Roots should only contain to-space oops
204 void verify_roots_in_to_space();
205 void verify_roots_in_to_space_except(ShenandoahRootVerifier::RootTypes types);
206
207 void verify_roots_no_forwarded();
208 void verify_roots_no_forwarded_except(ShenandoahRootVerifier::RootTypes types);
209 };
210
211 #endif // SHARE_GC_SHENANDOAH_SHENANDOAHVERIFIER_HPP
|