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

Bengt Rutisson bengt.rutisson at oracle.com
Mon Jan 14 21:06:41 UTC 2013


Hi all,

Could I have a couple of reviews for this small change?
http://cr.openjdk.java.net/~brutisso/8006242/webrev.00/

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: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20130114/eb9ee407/attachment.htm>


More information about the hotspot-gc-dev mailing list