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