The following assert in g1BlockOffsetPart is not always true:
assert(_bot->offset_array(0) == 0, "objects can't cross covered areas");
It holds only if the first region in the heap is committed, otherwise it will it-self trigger an assertion during the call to offset_array(). What would be a valid assertion to make is:
_bot->offset_array(_bot->index_for(_space->bottom())) == 0
I.e. an object starts at the bottom of this space. This is true for all regions accept continues humongous, so they will need special treatment.
We currently never uncommit the first region of the heap, so the impact and likelihood of this issue is pretty low.
assert(_bot->offset_array(0) == 0, "objects can't cross covered areas");
It holds only if the first region in the heap is committed, otherwise it will it-self trigger an assertion during the call to offset_array(). What would be a valid assertion to make is:
_bot->offset_array(_bot->index_for(_space->bottom())) == 0
I.e. an object starts at the bottom of this space. This is true for all regions accept continues humongous, so they will need special treatment.
We currently never uncommit the first region of the heap, so the impact and likelihood of this issue is pretty low.