Skip to content

Commit e6750a5

Browse files
committed
8357218: G1: Remove loop in G1CollectedHeap::try_collect_fullgc
Reviewed-by: kbarrett, tschatzl
1 parent 1a97eb4 commit e6750a5

File tree

4 files changed

+9
-35
lines changed

4 files changed

+9
-35
lines changed

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

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1860,30 +1860,6 @@ bool G1CollectedHeap::try_collect_concurrently(GCCause::Cause cause,
18601860
}
18611861
}
18621862

1863-
bool G1CollectedHeap::try_collect_fullgc(GCCause::Cause cause,
1864-
const G1GCCounters& counters_before) {
1865-
assert_heap_not_locked();
1866-
1867-
while(true) {
1868-
VM_G1CollectFull op(counters_before.total_collections(),
1869-
counters_before.total_full_collections(),
1870-
cause);
1871-
VMThread::execute(&op);
1872-
1873-
// Request is trivially finished.
1874-
if (!GCCause::is_explicit_full_gc(cause) || op.gc_succeeded()) {
1875-
return op.gc_succeeded();
1876-
}
1877-
1878-
{
1879-
MutexLocker ml(Heap_lock);
1880-
if (counters_before.total_full_collections() != total_full_collections()) {
1881-
return true;
1882-
}
1883-
}
1884-
}
1885-
}
1886-
18871863
bool G1CollectedHeap::try_collect(GCCause::Cause cause,
18881864
const G1GCCounters& counters_before) {
18891865
if (should_do_concurrent_full_gc(cause)) {
@@ -1902,7 +1878,11 @@ bool G1CollectedHeap::try_collect(GCCause::Cause cause,
19021878
return op.gc_succeeded();
19031879
} else {
19041880
// Schedule a Full GC.
1905-
return try_collect_fullgc(cause, counters_before);
1881+
VM_G1CollectFull op(counters_before.total_collections(),
1882+
counters_before.total_full_collections(),
1883+
cause);
1884+
VMThread::execute(&op);
1885+
return op.gc_succeeded();
19061886
}
19071887
}
19081888

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,6 @@ class G1CollectedHeap : public CollectedHeap {
280280
uint gc_counter,
281281
uint old_marking_started_before);
282282

283-
bool try_collect_fullgc(GCCause::Cause cause,
284-
const G1GCCounters& counters_before);
285-
286283
// indicates whether we are in young or mixed GC mode
287284
G1CollectorState _collector_state;
288285

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ bool VM_G1CollectFull::skip_operation() const {
5050
void VM_G1CollectFull::doit() {
5151
G1CollectedHeap* g1h = G1CollectedHeap::heap();
5252
GCCauseSetter x(g1h, _gc_cause);
53-
_gc_succeeded = g1h->do_full_collection(false /* clear_all_soft_refs */,
54-
false /* do_maximal_compaction */);
53+
g1h->do_full_collection(false /* clear_all_soft_refs */,
54+
false /* do_maximal_compaction */);
5555
}
5656

5757
VM_G1TryInitiateConcMark::VM_G1TryInitiateConcMark(uint gc_count_before,

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,17 @@
3131
// VM_operations for the G1 collector.
3232

3333
class VM_G1CollectFull : public VM_GC_Operation {
34-
bool _gc_succeeded;
35-
3634
protected:
3735
bool skip_operation() const override;
3836

3937
public:
4038
VM_G1CollectFull(uint gc_count_before,
4139
uint full_gc_count_before,
4240
GCCause::Cause cause) :
43-
VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true),
44-
_gc_succeeded(false) { }
41+
VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { }
4542
VMOp_Type type() const override { return VMOp_G1CollectFull; }
4643
void doit() override;
47-
bool gc_succeeded() const { return _gc_succeeded; }
44+
bool gc_succeeded() const { return prologue_succeeded(); }
4845
};
4946

5047
class VM_G1TryInitiateConcMark : public VM_GC_Operation {

0 commit comments

Comments
 (0)