A couple of questions for G1 developers

Andrew Haley aph at redhat.com
Mon Jun 3 10:42:42 UTC 2019

I'm debugging a crash that may have nothing to do with G1. However:

1. What is the structure of the G1BlockOffsetTable? It looks like an
   offset (in HeapWords?) for each chunk, from the start of the chunk
   to the start of the object which begins that chunk. So, if an
   object straddles a chunk binary, the offset is subtracted from the
   start of the chunk to give an oop.

2. Why does G1BlockOffsetTablePart::forward_to_block_containing_addr
   need an acquiring load on
  if (oop(q)->klass_or_null_acquire() == NULL) {
    return q;

I guess it must be because of a race, but what is it racing with?


Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671

More information about the hotspot-gc-dev mailing list