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

Vitaly Davidovich vitalyd at
Tue Jan 15 13:03:20 UTC 2013

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


Sent from my phone
On Jan 14, 2013 4:08 PM, "Bengt Rutisson" <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