mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
7121496: G1: do the per-region evacuation failure handling work in parallel
Parallelize the removal of self forwarding pointers etc. by wrapping in a HeapRegion closure, which is then wrapped inside an AbstractGangTask. Reviewed-by: tonyp, iveresov
This commit is contained in:
parent
c18293c806
commit
39d61f89a2
5 changed files with 262 additions and 168 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. 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
|
||||
|
@ -3080,19 +3080,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class SetClaimValuesInCSetHRClosure: public HeapRegionClosure {
|
||||
jint _claim_value;
|
||||
|
||||
public:
|
||||
SetClaimValuesInCSetHRClosure(jint claim_value) :
|
||||
_claim_value(claim_value) { }
|
||||
|
||||
bool doHeapRegion(HeapRegion* hr) {
|
||||
hr->set_claim_value(_claim_value);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class G1ParCompleteMarkInCSetTask: public AbstractGangTask {
|
||||
protected:
|
||||
G1CollectedHeap* _g1h;
|
||||
|
@ -3135,9 +3122,8 @@ void ConcurrentMark::complete_marking_in_collection_set() {
|
|||
|
||||
assert(g1h->check_cset_heap_region_claim_values(HeapRegion::CompleteMarkCSetClaimValue), "sanity");
|
||||
|
||||
// Now reset the claim values in the regions in the collection set.
|
||||
SetClaimValuesInCSetHRClosure set_cv_cl(HeapRegion::InitialClaimValue);
|
||||
g1h->collection_set_iterate(&set_cv_cl);
|
||||
// Reset the claim values in the regions in the collection set.
|
||||
g1h->reset_cset_heap_region_claim_values();
|
||||
|
||||
assert(g1h->check_cset_heap_region_claim_values(HeapRegion::InitialClaimValue), "sanity");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue