8231249: Shenandoah: GC retries are too aggressive for tests that expect OOME
Reviewed-by: rkennke
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Mon Sep 23 14:30:31 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Mon Sep 23 16:24:32 2019 +0200
@@ -809,22 +809,12 @@
// way later after GC happened, only to fail the second allocation, because
// other threads have already depleted the free storage. In this case, a better
// strategy is to try again, as long as GC makes progress.
- //
- // Then, we need to make sure the allocation was retried after at least one
- // Full GC, which means we want to try more than ShenandoahFullGCThreshold times.
-
- size_t tries = 0;
-
- while (result == NULL && _progress_last_gc.is_set()) {
- tries++;
- control_thread()->handle_alloc_failure(req.size());
- result = allocate_memory_under_lock(req, in_new_region);
- }
-
- while (result == NULL && tries <= ShenandoahFullGCThreshold) {
- tries++;
- control_thread()->handle_alloc_failure(req.size());
- result = allocate_memory_under_lock(req, in_new_region);
+
+ if (result == NULL) {
+ do {
+ control_thread()->handle_alloc_failure(req.size());
+ result = allocate_memory_under_lock(req, in_new_region);
+ } while (result == NULL && _progress_last_gc.is_set());
}
} else {