mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 17:44:40 +02:00
Merge
This commit is contained in:
commit
1739105160
285 changed files with 4287 additions and 4218 deletions
|
@ -51,6 +51,7 @@
|
|||
#include "oops/objArrayOop.hpp"
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "oops/symbol.hpp"
|
||||
#include "oops/typeArrayOop.inline.hpp"
|
||||
#include "oops/verifyOopClosure.hpp"
|
||||
#include "prims/jvm_misc.hpp"
|
||||
#include "prims/jvmtiExport.hpp"
|
||||
|
@ -1997,7 +1998,7 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) {
|
|||
// We must flush any deferred card marks and other various GC barrier
|
||||
// related buffers (e.g. G1 SATB buffer and G1 dirty card queue buffer)
|
||||
// before removing a thread from the list of active threads.
|
||||
BarrierSet::barrier_set()->flush_deferred_barriers(this);
|
||||
BarrierSet::barrier_set()->on_thread_detach(this);
|
||||
|
||||
log_info(os, thread)("JavaThread %s (tid: " UINTX_FORMAT ").",
|
||||
exit_type == JavaThread::normal_exit ? "exiting" : "detaching",
|
||||
|
@ -2026,36 +2027,6 @@ void JavaThread::exit(bool destroy_vm, ExitType exit_type) {
|
|||
}
|
||||
}
|
||||
|
||||
#if INCLUDE_ALL_GCS
|
||||
// Flush G1-related queues.
|
||||
void JavaThread::flush_barrier_queues() {
|
||||
satb_mark_queue().flush();
|
||||
dirty_card_queue().flush();
|
||||
}
|
||||
|
||||
void JavaThread::initialize_queues() {
|
||||
assert(!SafepointSynchronize::is_at_safepoint(),
|
||||
"we should not be at a safepoint");
|
||||
|
||||
SATBMarkQueue& satb_queue = satb_mark_queue();
|
||||
SATBMarkQueueSet& satb_queue_set = satb_mark_queue_set();
|
||||
// The SATB queue should have been constructed with its active
|
||||
// field set to false.
|
||||
assert(!satb_queue.is_active(), "SATB queue should not be active");
|
||||
assert(satb_queue.is_empty(), "SATB queue should be empty");
|
||||
// If we are creating the thread during a marking cycle, we should
|
||||
// set the active field of the SATB queue to true.
|
||||
if (satb_queue_set.is_active()) {
|
||||
satb_queue.set_active(true);
|
||||
}
|
||||
|
||||
DirtyCardQueue& dirty_queue = dirty_card_queue();
|
||||
// The dirty card queue should have been constructed with its
|
||||
// active field set to true.
|
||||
assert(dirty_queue.is_active(), "dirty card queue should be active");
|
||||
}
|
||||
#endif // INCLUDE_ALL_GCS
|
||||
|
||||
void JavaThread::cleanup_failed_attach_current_thread() {
|
||||
if (active_handles() != NULL) {
|
||||
JNIHandleBlock* block = active_handles();
|
||||
|
@ -2076,19 +2047,12 @@ void JavaThread::cleanup_failed_attach_current_thread() {
|
|||
tlab().make_parsable(true); // retire TLAB, if any
|
||||
}
|
||||
|
||||
#if INCLUDE_ALL_GCS
|
||||
if (UseG1GC) {
|
||||
flush_barrier_queues();
|
||||
}
|
||||
#endif // INCLUDE_ALL_GCS
|
||||
BarrierSet::barrier_set()->on_thread_detach(this);
|
||||
|
||||
Threads::remove(this);
|
||||
this->smr_delete();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
JavaThread* JavaThread::active() {
|
||||
Thread* thread = Thread::current();
|
||||
if (thread->is_Java_thread()) {
|
||||
|
@ -4341,9 +4305,8 @@ void Threads::add(JavaThread* p, bool force_daemon) {
|
|||
// The threads lock must be owned at this point
|
||||
assert_locked_or_safepoint(Threads_lock);
|
||||
|
||||
// See the comment for this method in thread.hpp for its purpose and
|
||||
// why it is called here.
|
||||
p->initialize_queues();
|
||||
BarrierSet::barrier_set()->on_thread_attach(p);
|
||||
|
||||
p->set_next(_thread_list);
|
||||
_thread_list = p;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue