mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-15 18:33:41 +00:00
8209396: Make PtrQueueSets not statically allocated
Change the G1BarrierSet PtrQueueSet static members to ordinary members. Reviewed-by: shade, tschatzl, rkennke
This commit is contained in:
parent
4729c903c6
commit
a007690fa0
@ -48,27 +48,30 @@
|
||||
class G1BarrierSetC1;
|
||||
class G1BarrierSetC2;
|
||||
|
||||
G1SATBMarkQueueSet G1BarrierSet::_satb_mark_queue_set;
|
||||
DirtyCardQueueSet G1BarrierSet::_dirty_card_queue_set;
|
||||
|
||||
G1BarrierSet::G1BarrierSet(G1CardTable* card_table) :
|
||||
CardTableBarrierSet(make_barrier_set_assembler<G1BarrierSetAssembler>(),
|
||||
make_barrier_set_c1<G1BarrierSetC1>(),
|
||||
make_barrier_set_c2<G1BarrierSetC2>(),
|
||||
card_table,
|
||||
BarrierSet::FakeRtti(BarrierSet::G1BarrierSet)) {}
|
||||
BarrierSet::FakeRtti(BarrierSet::G1BarrierSet)),
|
||||
_satb_mark_queue_set(),
|
||||
_dirty_card_queue_set()
|
||||
{}
|
||||
|
||||
void G1BarrierSet::enqueue(oop pre_val) {
|
||||
// Nulls should have been already filtered.
|
||||
assert(oopDesc::is_oop(pre_val, true), "Error");
|
||||
|
||||
if (!_satb_mark_queue_set.is_active()) return;
|
||||
G1SATBMarkQueueSet& queue_set = satb_mark_queue_set();
|
||||
if (!queue_set.is_active()) {
|
||||
return;
|
||||
}
|
||||
Thread* thr = Thread::current();
|
||||
if (thr->is_Java_thread()) {
|
||||
G1ThreadLocalData::satb_mark_queue(thr).enqueue(pre_val);
|
||||
} else {
|
||||
MutexLockerEx x(Shared_SATB_Q_lock, Mutex::_no_safepoint_check_flag);
|
||||
_satb_mark_queue_set.shared_satb_queue()->enqueue(pre_val);
|
||||
queue_set.shared_satb_queue()->enqueue(pre_val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,8 +39,12 @@ class G1CardTable;
|
||||
class G1BarrierSet: public CardTableBarrierSet {
|
||||
friend class VMStructs;
|
||||
private:
|
||||
static G1SATBMarkQueueSet _satb_mark_queue_set;
|
||||
static DirtyCardQueueSet _dirty_card_queue_set;
|
||||
G1SATBMarkQueueSet _satb_mark_queue_set;
|
||||
DirtyCardQueueSet _dirty_card_queue_set;
|
||||
|
||||
static G1BarrierSet* g1_barrier_set() {
|
||||
return barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
|
||||
}
|
||||
|
||||
public:
|
||||
G1BarrierSet(G1CardTable* table);
|
||||
@ -75,12 +79,12 @@ class G1BarrierSet: public CardTableBarrierSet {
|
||||
virtual void on_thread_attach(JavaThread* thread);
|
||||
virtual void on_thread_detach(JavaThread* thread);
|
||||
|
||||
static SATBMarkQueueSet& satb_mark_queue_set() {
|
||||
return _satb_mark_queue_set;
|
||||
static G1SATBMarkQueueSet& satb_mark_queue_set() {
|
||||
return g1_barrier_set()->_satb_mark_queue_set;
|
||||
}
|
||||
|
||||
static DirtyCardQueueSet& dirty_card_queue_set() {
|
||||
return _dirty_card_queue_set;
|
||||
return g1_barrier_set()->_dirty_card_queue_set;
|
||||
}
|
||||
|
||||
// Callbacks for runtime accesses.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user