mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
6702387: G1: assertion failure: assert(p == current_top || oop(p)->is_oop(),"p is not a block start")
Do not coalesce dead and moved objects when removing self-forwarding pointers during the evacuation failure. Also fixed a issue in a BOT refinement code for TLABs. Reviewed-by: tonyp, jcoomes
This commit is contained in:
parent
74ee57a572
commit
07198ddeda
2 changed files with 45 additions and 51 deletions
|
@ -412,7 +412,11 @@ G1BlockOffsetArray::forward_to_block_containing_addr_slow(HeapWord* q,
|
|||
// offset table was actually a lab allocation, and was divided into
|
||||
// several objects subsequently. Fix this situation as we answer the
|
||||
// query, by updating entries as we cross them.
|
||||
size_t next_index = _array->index_for(n) + 1;
|
||||
|
||||
// If the fist object's end q is at the card boundary. Start refining
|
||||
// with the corresponding card (the value of the entry will be basically
|
||||
// set to 0). If the object crosses the boundary -- start from the next card.
|
||||
size_t next_index = _array->index_for(n) + !_array->is_card_boundary(n);
|
||||
HeapWord* next_boundary = _array->address_for_index(next_index);
|
||||
if (csp() != NULL) {
|
||||
if (addr >= csp()->top()) return csp()->top();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue