8278551: Shenandoah: Adopt WorkerThread::worker_id() to replace Shenandoah specific implementation
Reviewed-by: rkennke
This commit is contained in:
parent
f15a59ce72
commit
937126b140
@ -25,6 +25,7 @@
|
||||
|
||||
#include "precompiled.hpp"
|
||||
#include "classfile/javaClasses.hpp"
|
||||
#include "gc/shared/workerThread.hpp"
|
||||
#include "gc/shenandoah/shenandoahOopClosures.inline.hpp"
|
||||
#include "gc/shenandoah/shenandoahReferenceProcessor.hpp"
|
||||
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
|
||||
@ -337,7 +338,6 @@ bool ShenandoahReferenceProcessor::discover(oop reference, ReferenceType type, u
|
||||
}
|
||||
|
||||
// Add reference to discovered list
|
||||
assert(worker_id != ShenandoahThreadLocalData::INVALID_WORKER_ID, "need valid worker ID");
|
||||
ShenandoahRefProcThreadLocal& refproc_data = _ref_proc_thread_locals[worker_id];
|
||||
oop discovered_head = refproc_data.discovered_list_head<T>();
|
||||
if (discovered_head == NULL) {
|
||||
@ -361,7 +361,7 @@ bool ShenandoahReferenceProcessor::discover_reference(oop reference, ReferenceTy
|
||||
}
|
||||
|
||||
log_trace(gc, ref)("Encountered Reference: " PTR_FORMAT " (%s)", p2i(reference), reference_type_name(type));
|
||||
uint worker_id = ShenandoahThreadLocalData::worker_id(Thread::current());
|
||||
uint worker_id = WorkerThread::worker_id();
|
||||
_ref_proc_thread_locals->inc_encountered(type);
|
||||
|
||||
if (UseCompressedOops) {
|
||||
|
@ -36,9 +36,6 @@
|
||||
#include "utilities/sizes.hpp"
|
||||
|
||||
class ShenandoahThreadLocalData {
|
||||
public:
|
||||
static const uint INVALID_WORKER_ID = uint(-1);
|
||||
|
||||
private:
|
||||
char _gc_state;
|
||||
// Evacuation OOM state
|
||||
@ -47,7 +44,6 @@ private:
|
||||
SATBMarkQueue _satb_mark_queue;
|
||||
PLAB* _gclab;
|
||||
size_t _gclab_size;
|
||||
uint _worker_id;
|
||||
int _disarmed_value;
|
||||
double _paced_time;
|
||||
|
||||
@ -58,7 +54,6 @@ private:
|
||||
_satb_mark_queue(&ShenandoahBarrierSet::satb_mark_queue_set()),
|
||||
_gclab(NULL),
|
||||
_gclab_size(0),
|
||||
_worker_id(INVALID_WORKER_ID),
|
||||
_disarmed_value(0),
|
||||
_paced_time(0) {
|
||||
|
||||
@ -103,16 +98,6 @@ public:
|
||||
return data(thread)->_gc_state;
|
||||
}
|
||||
|
||||
static void set_worker_id(Thread* thread, uint id) {
|
||||
assert(thread->is_Worker_thread(), "Must be a worker thread");
|
||||
data(thread)->_worker_id = id;
|
||||
}
|
||||
|
||||
static uint worker_id(Thread* thread) {
|
||||
assert(thread->is_Worker_thread(), "Must be a worker thread");
|
||||
return data(thread)->_worker_id;
|
||||
}
|
||||
|
||||
static void initialize_gclab(Thread* thread) {
|
||||
assert (thread->is_Java_thread() || thread->is_Worker_thread(), "Only Java and GC worker threads are allowed to get GCLABs");
|
||||
assert(data(thread)->_gclab == NULL, "Only initialize once");
|
||||
|
@ -146,10 +146,8 @@ ShenandoahGCWorkerPhase::~ShenandoahGCWorkerPhase() {
|
||||
_timings->record_workers_end(_phase);
|
||||
}
|
||||
|
||||
ShenandoahWorkerSession::ShenandoahWorkerSession(uint worker_id) : _worker_id(worker_id) {
|
||||
Thread* thr = Thread::current();
|
||||
assert(ShenandoahThreadLocalData::worker_id(thr) == ShenandoahThreadLocalData::INVALID_WORKER_ID, "Already set");
|
||||
ShenandoahThreadLocalData::set_worker_id(thr, worker_id);
|
||||
ShenandoahWorkerSession::ShenandoahWorkerSession(uint worker_id) {
|
||||
assert(worker_id == WorkerThread::worker_id(), "Wrong worker id");
|
||||
}
|
||||
|
||||
ShenandoahConcurrentWorkerSession::~ShenandoahConcurrentWorkerSession() {
|
||||
@ -157,12 +155,5 @@ ShenandoahConcurrentWorkerSession::~ShenandoahConcurrentWorkerSession() {
|
||||
}
|
||||
|
||||
ShenandoahParallelWorkerSession::~ShenandoahParallelWorkerSession() {
|
||||
_event.commit(GCId::current(), _worker_id, ShenandoahPhaseTimings::phase_name(ShenandoahGCPhase::current_phase()));
|
||||
}
|
||||
ShenandoahWorkerSession::~ShenandoahWorkerSession() {
|
||||
#ifdef ASSERT
|
||||
Thread* thr = Thread::current();
|
||||
assert(ShenandoahThreadLocalData::worker_id(thr) != ShenandoahThreadLocalData::INVALID_WORKER_ID, "Must be set");
|
||||
ShenandoahThreadLocalData::set_worker_id(thr, ShenandoahThreadLocalData::INVALID_WORKER_ID);
|
||||
#endif
|
||||
_event.commit(GCId::current(), WorkerThread::worker_id(), ShenandoahPhaseTimings::phase_name(ShenandoahGCPhase::current_phase()));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2019, Red Hat, Inc. All rights reserved.
|
||||
* Copyright (c) 2017, 2021, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -30,6 +30,7 @@
|
||||
#include "gc/shared/gcVMOperations.hpp"
|
||||
#include "gc/shared/isGCActiveMark.hpp"
|
||||
#include "gc/shared/suspendibleThreadSet.hpp"
|
||||
#include "gc/shared/workerThread.hpp"
|
||||
#include "gc/shenandoah/shenandoahPhaseTimings.hpp"
|
||||
#include "gc/shenandoah/shenandoahThreadLocalData.hpp"
|
||||
#include "jfr/jfrEvents.hpp"
|
||||
@ -173,16 +174,10 @@ public:
|
||||
|
||||
class ShenandoahWorkerSession : public StackObj {
|
||||
protected:
|
||||
uint _worker_id;
|
||||
|
||||
ShenandoahWorkerSession(uint worker_id);
|
||||
~ShenandoahWorkerSession();
|
||||
public:
|
||||
static inline uint worker_id() {
|
||||
Thread* thr = Thread::current();
|
||||
uint id = ShenandoahThreadLocalData::worker_id(thr);
|
||||
assert(id != ShenandoahThreadLocalData::INVALID_WORKER_ID, "Worker session has not been created");
|
||||
return id;
|
||||
return WorkerThread::worker_id();
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user