--- a/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp Wed Nov 27 06:36:41 2019 -0800
+++ b/src/hotspot/share/gc/shenandoah/shenandoahFreeSet.cpp Wed Nov 27 11:52:57 2019 -0500
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, 2018, Red Hat, Inc. All rights reserved.
+ * Copyright (c) 2016, 2019, Red Hat, Inc. All rights reserved.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
@@ -149,6 +149,11 @@
HeapWord* ShenandoahFreeSet::try_allocate_in(ShenandoahHeapRegion* r, ShenandoahAllocRequest& req, bool& in_new_region) {
assert (!has_no_alloc_capacity(r), "Performance: should avoid full regions on this path: " SIZE_FORMAT, r->region_number());
+ if (_heap->is_concurrent_root_in_progress() &&
+ r->is_trash()) {
+ return NULL;
+ }
+
try_recycle_trashed(r);
in_new_region = r->is_empty();