diff --git a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
index 757cab8f686..0568d9b4fff 100644
--- a/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
+++ b/src/hotspot/share/gc/shenandoah/heuristics/shenandoahGenerationalHeuristics.cpp
@@ -237,7 +237,7 @@ void ShenandoahGenerationalHeuristics::choose_collection_set(ShenandoahCollectio
evacInfo.set_regular_promoted_free(regular_regions_promoted_free);
evacInfo.set_regions_immediate(immediate_regions);
evacInfo.set_immediate_size(immediate_garbage);
- evacInfo.set_regions_freed(free_regions);
+ evacInfo.set_free_regions(free_regions);
ShenandoahTracer().report_evacuation_info(&evacInfo);
}
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahEvacInfo.hpp b/src/hotspot/share/gc/shenandoah/shenandoahEvacInfo.hpp
index 5ca65763833..8069fd13afa 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahEvacInfo.hpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahEvacInfo.hpp
@@ -35,20 +35,20 @@ class ShenandoahEvacuationInformation : public StackObj {
size_t _collected_old;
size_t _collected_promoted;
size_t _collected_young;
+ size_t _free_regions;
size_t _regions_promoted_humongous;
size_t _regions_promoted_regular;
size_t _regular_promoted_garbage;
size_t _regular_promoted_free;
- size_t _regions_freed;
size_t _regions_immediate;
size_t _immediate_size;
public:
ShenandoahEvacuationInformation() :
_collection_set_regions(0), _collection_set_used_before(0), _collection_set_used_after(0),
- _collected_old(0), _collected_promoted(0), _collected_young(0), _regions_promoted_humongous(0),
- _regions_promoted_regular(0), _regular_promoted_garbage(0), _regular_promoted_free(0),
- _regions_freed(0), _regions_immediate(0), _immediate_size(0) { }
+ _collected_old(0), _collected_promoted(0), _collected_young(0), _free_regions(0),
+ _regions_promoted_humongous(0), _regions_promoted_regular(0), _regular_promoted_garbage(0),
+ _regular_promoted_free(0), _regions_immediate(0), _immediate_size(0) { }
void set_collection_set_regions(size_t collection_set_regions) {
_collection_set_regions = collection_set_regions;
@@ -74,8 +74,8 @@ public:
_collected_young = collected;
}
- void set_regions_freed(size_t freed) {
- _regions_freed = freed;
+ void set_free_regions(size_t freed) {
+ _free_regions = freed;
}
void set_regions_promoted_humongous(size_t humongous) {
@@ -112,7 +112,7 @@ public:
size_t regions_promoted_regular() { return _regions_promoted_regular; }
size_t regular_promoted_garbage() { return _regular_promoted_garbage; }
size_t regular_promoted_free() { return _regular_promoted_free; }
- size_t regions_freed() { return _regions_freed; }
+ size_t free_regions() { return _free_regions; }
size_t regions_immediate() { return _regions_immediate; }
size_t immediate_size() { return _immediate_size; }
};
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahTrace.cpp b/src/hotspot/share/gc/shenandoah/shenandoahTrace.cpp
index f1afcca3493..dd153718c9f 100644
--- a/src/hotspot/share/gc/shenandoah/shenandoahTrace.cpp
+++ b/src/hotspot/share/gc/shenandoah/shenandoahTrace.cpp
@@ -44,7 +44,7 @@ void ShenandoahTracer::send_evacuation_info_event(ShenandoahEvacuationInformatio
e.set_regionsPromotedRegular(info->regions_promoted_regular());
e.set_regularPromotedGarbage(info->regular_promoted_garbage());
e.set_regularPromotedFree(info->regular_promoted_free());
- e.set_regionsFreed(info->regions_freed());
+ e.set_freeRegions(info->free_regions());
e.set_regionsImmediate(info->regions_immediate());
e.set_immediateBytes(info->immediate_size());
diff --git a/src/hotspot/share/jfr/metadata/metadata.xml b/src/hotspot/share/jfr/metadata/metadata.xml
index 1b85cb1350c..a9eed63f9aa 100644
--- a/src/hotspot/share/jfr/metadata/metadata.xml
+++ b/src/hotspot/share/jfr/metadata/metadata.xml
@@ -1220,7 +1220,7 @@
-
+
diff --git a/test/jdk/jdk/jfr/event/gc/detailed/TestShenandoahEvacuationInformationEvent.java b/test/jdk/jdk/jfr/event/gc/detailed/TestShenandoahEvacuationInformationEvent.java
index 4f2334284cc..d858198a87d 100644
--- a/test/jdk/jdk/jfr/event/gc/detailed/TestShenandoahEvacuationInformationEvent.java
+++ b/test/jdk/jdk/jfr/event/gc/detailed/TestShenandoahEvacuationInformationEvent.java
@@ -49,6 +49,7 @@ public class TestShenandoahEvacuationInformationEvent {
public static void main(String[] args) throws Exception {
final long shenandoahHeapRegionSize = 1024 * 1024;
+ final long shenandoahMaxHeapRegionCount = 64;
Recording recording = new Recording();
recording.enable(EVENT_NAME).withThreshold(Duration.ofMillis(0));
recording.start();
@@ -63,14 +64,14 @@ public class TestShenandoahEvacuationInformationEvent {
}
System.out.println("Event: " + event);
- long setRegions = Events.assertField(event, "cSetRegions").atLeast(0L).getValue();
+ long cSetRegions = Events.assertField(event, "cSetRegions").atLeast(0L).getValue();
long setUsedAfter = Events.assertField(event, "cSetUsedAfter").atLeast(0L).getValue();
long setUsedBefore = Events.assertField(event, "cSetUsedBefore").atLeast(setUsedAfter).getValue();
- long regionsFreed = Events.assertField(event, "regionsFreed").atLeast(0L).getValue();
+ long freeRegions = Events.assertField(event, "freeRegions").atLeast(0L).getValue();
Events.assertField(event, "collectedOld").atLeast(0L).getValue();
Events.assertField(event, "collectedYoung").atLeast(0L).getValue();
- Asserts.assertGreaterThanOrEqual(setRegions, regionsFreed, "setRegions >= regionsFreed");
+ Asserts.assertGreaterThanOrEqual(shenandoahMaxHeapRegionCount, freeRegions + cSetRegions, "numRegions >= freeRegions + cSetRegions");
Asserts.assertGreaterThanOrEqual(shenandoahHeapRegionSize * setRegions, setUsedAfter, "ShenandoahHeapRegionSize * setRegions >= setUsedAfter");
Asserts.assertGreaterThanOrEqual(shenandoahHeapRegionSize * setRegions, setUsedBefore, "ShenandoahHeapRegionSize * setRegions >= setUsedBefore");