mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
8001384: G1: assert(!is_null(v)) failed: narrow oop value can never be zero
Flush any deferred card mark before a Java thread exits. Reviewed-by: brutisso, jmasa
This commit is contained in:
parent
7d2ccf3a21
commit
1333948266
1 changed files with 10 additions and 3 deletions
|
@ -1500,7 +1500,7 @@ JavaThread::JavaThread(bool is_attaching_via_jni) :
|
|||
} else {
|
||||
_jni_attach_state = _not_attaching_via_jni;
|
||||
}
|
||||
assert(_deferred_card_mark.is_empty(), "Default MemRegion ctor");
|
||||
assert(deferred_card_mark().is_empty(), "Default MemRegion ctor");
|
||||
_safepoint_visible = false;
|
||||
}
|
||||
|
||||
|
@ -1896,9 +1896,16 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) {
|
|||
JvmtiExport::cleanup_thread(this);
|
||||
}
|
||||
|
||||
#ifndef SERIALGC
|
||||
// We must flush G1-related buffers before removing a thread from
|
||||
// We must flush any deferred card marks before removing a thread from
|
||||
// the list of active threads.
|
||||
Universe::heap()->flush_deferred_store_barrier(this);
|
||||
assert(deferred_card_mark().is_empty(), "Should have been flushed");
|
||||
|
||||
#ifndef SERIALGC
|
||||
// We must flush the G1-related buffers before removing a thread
|
||||
// from the list of active threads. We must do this after any deferred
|
||||
// card marks have been flushed (above) so that any entries that are
|
||||
// added to the thread's dirty card queue as a result are not lost.
|
||||
if (UseG1GC) {
|
||||
flush_barrier_queues();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue