mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +00:00
8375964: G1: Convert G1BuildCandidateRegionsTask to use Atomic<T>
Reviewed-by: shade, iwalulya
This commit is contained in:
parent
4597046984
commit
a49986c62f
@ -203,13 +203,13 @@ class G1BuildCandidateRegionsTask : public WorkerTask {
|
|||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
G1HeapRegionClaimer _hrclaimer;
|
G1HeapRegionClaimer _hrclaimer;
|
||||||
|
|
||||||
uint volatile _num_regions_added;
|
Atomic<uint> _num_regions_added;
|
||||||
|
|
||||||
G1BuildCandidateArray _result;
|
G1BuildCandidateArray _result;
|
||||||
|
|
||||||
void update_totals(uint num_regions) {
|
void update_totals(uint num_regions) {
|
||||||
if (num_regions > 0) {
|
if (num_regions > 0) {
|
||||||
AtomicAccess::add(&_num_regions_added, num_regions);
|
_num_regions_added.add_then_fetch(num_regions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ class G1BuildCandidateRegionsTask : public WorkerTask {
|
|||||||
void prune(G1HeapRegion** data) {
|
void prune(G1HeapRegion** data) {
|
||||||
G1Policy* p = G1CollectedHeap::heap()->policy();
|
G1Policy* p = G1CollectedHeap::heap()->policy();
|
||||||
|
|
||||||
uint num_candidates = AtomicAccess::load(&_num_regions_added);
|
uint num_candidates = _num_regions_added.load_relaxed();
|
||||||
|
|
||||||
uint min_old_cset_length = p->calc_min_old_cset_length(num_candidates);
|
uint min_old_cset_length = p->calc_min_old_cset_length(num_candidates);
|
||||||
uint num_pruned = 0;
|
uint num_pruned = 0;
|
||||||
@ -254,7 +254,7 @@ class G1BuildCandidateRegionsTask : public WorkerTask {
|
|||||||
wasted_bytes,
|
wasted_bytes,
|
||||||
allowed_waste);
|
allowed_waste);
|
||||||
|
|
||||||
AtomicAccess::sub(&_num_regions_added, num_pruned, memory_order_relaxed);
|
_num_regions_added.sub_then_fetch(num_pruned, memory_order_relaxed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -275,7 +275,7 @@ public:
|
|||||||
_result.sort_by_gc_efficiency();
|
_result.sort_by_gc_efficiency();
|
||||||
prune(_result.array());
|
prune(_result.array());
|
||||||
candidates->set_candidates_from_marking(_result.array(),
|
candidates->set_candidates_from_marking(_result.array(),
|
||||||
_num_regions_added);
|
_num_regions_added.load_relaxed());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user