comparison src/share/vm/gc_implementation/g1/g1RemSet.hpp @ 20504:6948da6d7c13

8052172: Evacuation failure handling in G1 does not evacuate all objects if -XX:-G1DeferredRSUpdate is set Summary: Remove -XX:-G1DeferredRSUpdate functionality as it is racy. During evacuation failure handling, threads where evacuation failure handling occurred may try to add remembered sets to regions which remembered sets are currently being scanned. The iterator to handle the remembered set scan does not support addition of entries during scan and so may skip valid references. Reviewed-by: iveresov, brutisso, mgerdin
author tschatzl
date Tue, 30 Sep 2014 09:44:36 +0200
parents 7baf47cb97cb
children 7848fc12602b
comparison
equal deleted inserted replaced
20503:fa56205f142c 20504:6948da6d7c13
191 // Override: this closure is idempotent. 191 // Override: this closure is idempotent.
192 // bool idempotent() { return true; } 192 // bool idempotent() { return true; }
193 bool apply_to_weak_ref_discovered_field() { return true; } 193 bool apply_to_weak_ref_discovered_field() { return true; }
194 }; 194 };
195 195
196 class UpdateRSetImmediate: public OopsInHeapRegionClosure {
197 private:
198 G1RemSet* _g1_rem_set;
199
200 template <class T> void do_oop_work(T* p);
201 public:
202 UpdateRSetImmediate(G1RemSet* rs) :
203 _g1_rem_set(rs) {}
204
205 virtual void do_oop(narrowOop* p) { do_oop_work(p); }
206 virtual void do_oop( oop* p) { do_oop_work(p); }
207 };
208
209
210 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_HPP 196 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_G1REMSET_HPP