Skip to content

Commit a007690

Browse files
author
Kim Barrett
committed
8209396: Make PtrQueueSets not statically allocated
Change the G1BarrierSet PtrQueueSet static members to ordinary members. Reviewed-by: shade, tschatzl, rkennke
1 parent 4729c90 commit a007690

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/hotspot/share/gc/g1/g1BarrierSet.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,30 @@
4848
class G1BarrierSetC1;
4949
class G1BarrierSetC2;
5050

51-
G1SATBMarkQueueSet G1BarrierSet::_satb_mark_queue_set;
52-
DirtyCardQueueSet G1BarrierSet::_dirty_card_queue_set;
53-
5451
G1BarrierSet::G1BarrierSet(G1CardTable* card_table) :
5552
CardTableBarrierSet(make_barrier_set_assembler<G1BarrierSetAssembler>(),
5653
make_barrier_set_c1<G1BarrierSetC1>(),
5754
make_barrier_set_c2<G1BarrierSetC2>(),
5855
card_table,
59-
BarrierSet::FakeRtti(BarrierSet::G1BarrierSet)) {}
56+
BarrierSet::FakeRtti(BarrierSet::G1BarrierSet)),
57+
_satb_mark_queue_set(),
58+
_dirty_card_queue_set()
59+
{}
6060

6161
void G1BarrierSet::enqueue(oop pre_val) {
6262
// Nulls should have been already filtered.
6363
assert(oopDesc::is_oop(pre_val, true), "Error");
6464

65-
if (!_satb_mark_queue_set.is_active()) return;
65+
G1SATBMarkQueueSet& queue_set = satb_mark_queue_set();
66+
if (!queue_set.is_active()) {
67+
return;
68+
}
6669
Thread* thr = Thread::current();
6770
if (thr->is_Java_thread()) {
6871
G1ThreadLocalData::satb_mark_queue(thr).enqueue(pre_val);
6972
} else {
7073
MutexLockerEx x(Shared_SATB_Q_lock, Mutex::_no_safepoint_check_flag);
71-
_satb_mark_queue_set.shared_satb_queue()->enqueue(pre_val);
74+
queue_set.shared_satb_queue()->enqueue(pre_val);
7275
}
7376
}
7477

src/hotspot/share/gc/g1/g1BarrierSet.hpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ class G1CardTable;
3939
class G1BarrierSet: public CardTableBarrierSet {
4040
friend class VMStructs;
4141
private:
42-
static G1SATBMarkQueueSet _satb_mark_queue_set;
43-
static DirtyCardQueueSet _dirty_card_queue_set;
42+
G1SATBMarkQueueSet _satb_mark_queue_set;
43+
DirtyCardQueueSet _dirty_card_queue_set;
44+
45+
static G1BarrierSet* g1_barrier_set() {
46+
return barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
47+
}
4448

4549
public:
4650
G1BarrierSet(G1CardTable* table);
@@ -75,12 +79,12 @@ class G1BarrierSet: public CardTableBarrierSet {
7579
virtual void on_thread_attach(JavaThread* thread);
7680
virtual void on_thread_detach(JavaThread* thread);
7781

78-
static SATBMarkQueueSet& satb_mark_queue_set() {
79-
return _satb_mark_queue_set;
82+
static G1SATBMarkQueueSet& satb_mark_queue_set() {
83+
return g1_barrier_set()->_satb_mark_queue_set;
8084
}
8185

8286
static DirtyCardQueueSet& dirty_card_queue_set() {
83-
return _dirty_card_queue_set;
87+
return g1_barrier_set()->_dirty_card_queue_set;
8488
}
8589

8690
// Callbacks for runtime accesses.

0 commit comments

Comments
 (0)