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);
     }