OpenJDK / jdk / jdk
changeset 58648:9be4780d3c58
8242040: Shenandoah: print allocation failure type
Reviewed-by: rkennke
author | shade |
---|---|
date | Thu, 02 Apr 2020 20:10:59 +0200 |
parents | 29d878d3af35 |
children | 5d55f8f521e9 |
files | src/hotspot/share/gc/shenandoah/shenandoahAllocRequest.hpp src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp src/hotspot/share/gc/shenandoah/shenandoahControlThread.hpp src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp |
diffstat | 4 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/share/gc/shenandoah/shenandoahAllocRequest.hpp Thu Apr 02 22:38:23 2020 +0530 +++ b/src/hotspot/share/gc/shenandoah/shenandoahAllocRequest.hpp Thu Apr 02 20:10:59 2020 +0200 @@ -95,6 +95,10 @@ return _alloc_type; } + inline const char* type_string() { + return alloc_type_to_string(_alloc_type); + } + inline size_t min_size() { assert (is_lab_alloc(), "Only access for LAB allocs"); return _min_size;
--- a/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp Thu Apr 02 22:38:23 2020 +0530 +++ b/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp Thu Apr 02 20:10:59 2020 +0200 @@ -506,15 +506,16 @@ } } -void ShenandoahControlThread::handle_alloc_failure(size_t words) { +void ShenandoahControlThread::handle_alloc_failure(ShenandoahAllocRequest& req) { ShenandoahHeap* heap = ShenandoahHeap::heap(); assert(current()->is_Java_thread(), "expect Java thread here"); if (try_set_alloc_failure_gc()) { // Only report the first allocation failure - log_info(gc)("Failed to allocate " SIZE_FORMAT "%s", - byte_size_in_proper_unit(words * HeapWordSize), proper_unit_for_byte_size(words * HeapWordSize)); + log_info(gc)("Failed to allocate %s, " SIZE_FORMAT "%s", + req.type_string(), + byte_size_in_proper_unit(req.size() * HeapWordSize), proper_unit_for_byte_size(req.size() * HeapWordSize)); // Now that alloc failure GC is scheduled, we can abort everything else heap->cancel_gc(GCCause::_allocation_failure);
--- a/src/hotspot/share/gc/shenandoah/shenandoahControlThread.hpp Thu Apr 02 22:38:23 2020 +0530 +++ b/src/hotspot/share/gc/shenandoah/shenandoahControlThread.hpp Thu Apr 02 20:10:59 2020 +0200 @@ -115,7 +115,7 @@ // Handle allocation failure from normal allocation. // Blocks until memory is available. - void handle_alloc_failure(size_t words); + void handle_alloc_failure(ShenandoahAllocRequest& req); // Handle allocation failure from evacuation path. // Optionally blocks while collector is handling the failure.
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Thu Apr 02 22:38:23 2020 +0530 +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Thu Apr 02 20:10:59 2020 +0200 @@ -821,13 +821,13 @@ while (result == NULL && _progress_last_gc.is_set()) { tries++; - control_thread()->handle_alloc_failure(req.size()); + control_thread()->handle_alloc_failure(req); result = allocate_memory_under_lock(req, in_new_region); } while (result == NULL && tries <= ShenandoahFullGCThreshold) { tries++; - control_thread()->handle_alloc_failure(req.size()); + control_thread()->handle_alloc_failure(req); result = allocate_memory_under_lock(req, in_new_region); }