From 9c991cfa525e66bac978bacc65429c8779682f87 Mon Sep 17 00:00:00 2001 From: William Kemper Date: Fri, 25 Apr 2025 13:36:21 -0700 Subject: [PATCH 1/2] Add test case for compact object headers, increase pressure on old generation --- .../generational/TestOldGrowthTriggers.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java b/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java index d8471f2db2f28..195b5913ef15f 100644 --- a/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java +++ b/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java @@ -58,14 +58,6 @@ public static void makeOldAllocations() { int replaceIndex = r.nextInt(ArraySize); int deriveIndex = r.nextInt(ArraySize); switch (i & 0x3) { - case 0: - // 50% chance of creating garbage - array[replaceIndex] = array[replaceIndex].max(array[deriveIndex]); - break; - case 1: - // 50% chance of creating garbage - array[replaceIndex] = array[replaceIndex].min(array[deriveIndex]); - break; case 2: // creates new old BigInteger, releases old BigInteger, // may create ephemeral data while computing gcd @@ -106,5 +98,17 @@ public static void main(String[] args) throws Exception { "-XX:ShenandoahGuaranteedYoungGCInterval=0", "-XX:ShenandoahGuaranteedOldGCInterval=0" ); + + testOld("-Xlog:gc", + "-Xms96m", + "-Xmx96m", + "-XX:+UnlockDiagnosticVMOptions", + "-XX:+UnlockExperimentalVMOptions", + "-XX:+UseShenandoahGC", + "-XX:ShenandoahGCMode=generational", + "-XX:ShenandoahGuaranteedYoungGCInterval=0", + "-XX:ShenandoahGuaranteedOldGCInterval=0", + "-XX:+UseCompactObjectHeaders" + ); } } From 70b36ac530e0ffa5125e63e4ca1d55d6eef22f11 Mon Sep 17 00:00:00 2001 From: William Kemper Date: Mon, 28 Apr 2025 15:22:22 -0700 Subject: [PATCH 2/2] Clarify cases with comment --- .../gc/shenandoah/generational/TestOldGrowthTriggers.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java b/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java index 195b5913ef15f..840ceffc4fef9 100644 --- a/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java +++ b/test/hotspot/jtreg/gc/shenandoah/generational/TestOldGrowthTriggers.java @@ -58,15 +58,18 @@ public static void makeOldAllocations() { int replaceIndex = r.nextInt(ArraySize); int deriveIndex = r.nextInt(ArraySize); switch (i & 0x3) { - case 2: + case 0: // creates new old BigInteger, releases old BigInteger, // may create ephemeral data while computing gcd array[replaceIndex] = array[replaceIndex].gcd(array[deriveIndex]); break; - case 3: + case 1: // creates new old BigInteger, releases old BigInteger array[replaceIndex] = array[replaceIndex].multiply(array[deriveIndex]); break; + case 2,3: + // do nothing, let all objects in the array age to increase pressure on old generation + break; } } }