Take 3: 8225716: G1 GC: Undefined behaviour in G1BlockOffsetTablePart::block_at_or_preceding
Kim Barrett
kim.barrett at oracle.com
Tue Jun 18 18:06:04 UTC 2019
> On Jun 18, 2019, at 10:48 AM, Andrew Haley <aph at redhat.com> wrote:
>
> On 6/17/19 9:20 PM, Thomas Schatzl wrote:
>>> It *might* be a (pre-existing) bug that the heap memory range
>>> predicates don't accept pointer to volatile. But looking at the
>>> asserts you needed to fix, my reaction is to question their utility,
>>> and wonder if they should just be removed. What do others think?
>>>
>> not seeing that they are particularly useful, so good to just remove
>> to me too.
>
> OK.
>
> I take it, though, that we still need the check_index() in
>
> void G1BlockOffsetTable::set_offset_array(size_t index, u_char offset) {
> check_index(index, "index out of range");
> Atomic::store(offset, &_offset_array[index]);
> }
>
> ... and therefore we're still going to need a raw version of
> set_offset_array() because zero_bottom_entry_raw() is called before the
> HeapRegion is initialized, and therefore check_index() will fail.
So a bootstrapping workaround. Bleh! OK.
Sorry for steering you wrong on that.
More information about the hotspot-gc-dev
mailing list