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.