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

Mikael Gerdin mikael.gerdin at oracle.com
Wed Jan 16 11:46:28 UTC 2013


Bengt,

On 2013-01-14 22:06, Bengt Rutisson wrote:
>
> Hi all,
>
> Could I have a couple of reviews for this small change?
> http://cr.openjdk.java.net/~brutisso/8006242/webrev.00/

Looks good to me.

/Mikael

>
> 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

-- 
Mikael Gerdin
Java SE VM SQE Stockholm



More information about the hotspot-gc-dev mailing list