Request for review (S): 8006242: G1: WorkerDataArray<T>::verify() too strict for double calculations
Bengt Rutisson
bengt.rutisson at oracle.com
Wed Jan 16 12:18:37 UTC 2013
Thanks for the review!
All set to push this now.
Bengt
On 1/16/13 12:46 PM, Mikael Gerdin wrote:
> 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
>
More information about the hotspot-gc-dev
mailing list