RFR: 8237363: Remove automatic is in heap verification in OopIterateClosure

Stefan Karlsson stefan.karlsson at oracle.com
Fri Jan 17 13:31:05 UTC 2020


Hi all,

Please review this patch to remove the automatic "is in heap" 
verification from OopIterateClosure.

https://cr.openjdk.java.net/~stefank/8237363/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8237363

OopIterateClosure provides some automatic verification that loaded 
objects are inside the heap. Closures can opt out from this by 
overriding should_verify_oops().

I propose that we move this verification, and the way to turn it off, 
and instead let the implementations of the closures decide the kind of 
verification that is appropriate. I want to do this to de-clutter the 
closure APIs a bit.

I've gone through all OopIterateClosures that don't override 
should_verify_oops() and added calls to 
assert_oop_field_points_to_object_in_heap[_or_null] where the closures 
didn't have equivalent checks.

A lot of the places didn't explicitly check that the object is within 
the heap but they would check for other things like:
- Is the corresponding bit index within the range
- Is the heap region index within range
- Is the object in the reserved heap range (weaker than is_in)

I've added asserts to those places. If you think I should remove some of 
them, please let me now.

Tested with tier1-3

Thanks,
StefanK


More information about the hotspot-gc-dev mailing list