Request for review (S): 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations

Bengt Rutisson bengt.rutisson at
Wed Jan 16 12:18:05 UTC 2013

Hi Vitaly,

Thanks for looking at this!

On 1/15/13 2:03 PM, Vitaly Davidovich wrote:
> Hi Bengt,
> Looks good.  Do you need the constants for int/double/size_t? Would it 
> be easier to have a static getter that returns "(T)-1" and then use 
> that instead?

It would work, but I'm not sure what is best. I prefer the constants, 
but I would be fine with a getter too. If you don't have strong 
objections I'll leave it as it is.


> Thanks
> Sent from my phone
> On Jan 14, 2013 4:08 PM, "Bengt Rutisson" <bengt.rutisson at 
> <mailto:bengt.rutisson at>> wrote:
>     Hi all,
>     Could I have a couple of reviews for this small change?
>     <>
>     Thanks to John Cuthbertson for finding this bug and providing
>     excellent data to track down the issue.
>     From the bug report:
>     In non-product builds the WorkerDataArrays in G1 are initialized
>     to -1 in WorkerDataArray<T>::reset() when a GC starts. At the end
>     of a GC WorkerDataArray<T>::verify() verifies that all entries in
>     a WorkerDataArray has been set. Currently it does this by
>     asserting that the entries are >= 0. This is fine in theory since
>     the entries should contain counts or times that are all positive.
>     The problem is that some WorkerDataArrays are of type double. And
>     some of those are set up through calculations using doubles. If
>     those calculations result in a value close to 0 we could end up
>     with a value slightly less than 0 since double calculations don't
>     have full precision.
>     All we really want to verify is that all the entries were set. So,
>     it should be enough to verify that entries do not contain the
>     value set by the reset() method.
>     Bengt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the hotspot-gc-dev mailing list