RFR (XS): 8u40 Backport of 8052172: Evacuation failure handling in G1 does not evacuate all objects if -XX:-G1DeferredRSUpdate is set
Bengt Rutisson
bengt.rutisson at oracle.com
Mon Sep 29 09:02:32 UTC 2014
Hi Thomas,
On 2014-09-29 10:49, Thomas Schatzl wrote:
> Hi all,
>
> can I have reviews for a merge error to backport 8052172 to 8u40?
>
> In particular, this hunk from g1ParScanThreadState.hpp:
>
> @@ -124,8 +110,17 @@
> _refs->push(ref);
> }
>
> - template <class T> inline void update_rs(HeapRegion* from, T* p, int tid);
> -
> + template <class T> void update_rs(HeapRegion* from, T* p, int tid) {
> + // If the new value of the field points to the same region or
> + // is the to-space, we don't need to include it in the Rset updates.
> + if (!from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) && !from->is_survivor()) {
> + size_t card_index = ctbs()->index_for(p);
> + // If the card hasn't been added to the buffer, do it.
> + if (ctbs()->mark_card_deferred(card_index)) {
> + dirty_card_queue().enqueue((jbyte*)ctbs()->byte_for_index(card_index));
> + }
> + }
> + }
> private:
>
> inline HeapWord* allocate(GCAllocPurpose purpose, size_t word_sz);
>
> did not apply cleanly any more because later changes removed the
> allocation methods.
>
> The remainder of the change applied cleanly.
>
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8052172
> Original Webrev:
> http://cr.openjdk.java.net/~tschatzl/8052172/webrev/
> 8u40 Webrev:
> http://cr.openjdk.java.net/~tschatzl/8052172/webrev.8u40/
I only looked at the merge in g1ParScanThreadState.hpp. I assume
everything else is fine since it applied cleanly.
g1ParScanThreadState.hpp looks good.
Ship it!
Bengt
>
> Thanks,
> Thomas
>
More information about the hotspot-gc-dev
mailing list