From 2eeda64632621c31c6b0a9257ddec7ce9bc5eaec Mon Sep 17 00:00:00 2001 From: Calvin Cheung Date: Thu, 27 Mar 2025 15:34:56 +0000 Subject: [PATCH] 8325132: CDS: Make sure the ArchiveRelocationMode is always printed in the log Reviewed-by: shade, iklam --- src/hotspot/share/cds/metaspaceShared.cpp | 2 ++ .../runtime/cds/appcds/ArchiveRelocationTest.java | 9 ++++++--- .../jtreg/runtime/cds/appcds/TestSerialGCWithCDS.java | 4 ++-- .../dynamicArchive/DynamicArchiveRelocationTest.java | 11 ++++++++--- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/hotspot/share/cds/metaspaceShared.cpp b/src/hotspot/share/cds/metaspaceShared.cpp index 3677b3baf5f..7ce423e6f87 100644 --- a/src/hotspot/share/cds/metaspaceShared.cpp +++ b/src/hotspot/share/cds/metaspaceShared.cpp @@ -1134,6 +1134,8 @@ void MetaspaceShared::initialize_runtime_shared_and_meta_spaces() { log_info(cds)("Core region alignment: %zu", static_mapinfo->core_region_alignment()); dynamic_mapinfo = open_dynamic_archive(); + log_info(cds)("ArchiveRelocationMode: %d", ArchiveRelocationMode); + // First try to map at the requested address result = map_archives(static_mapinfo, dynamic_mapinfo, true); if (result == MAP_ARCHIVE_MMAP_FAILURE) { diff --git a/test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java b/test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java index 55d9b207da6..b89ad7e1180 100644 --- a/test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java +++ b/test/hotspot/jtreg/runtime/cds/appcds/ArchiveRelocationTest.java @@ -61,8 +61,8 @@ public class ArchiveRelocationTest { String appJar = ClassFileInstaller.getJarPath("hello.jar"); String mainClass = "Hello"; - String forceRelocation = "-XX:ArchiveRelocationMode=1"; - String runRelocArg = run_reloc ? forceRelocation : "-showversion"; + String maybeRelocation = "-XX:ArchiveRelocationMode=0"; + String runRelocArg = run_reloc ? "-showversion" : maybeRelocation; String logArg = "-Xlog:cds=debug,cds+reloc=debug,cds+heap"; String unlockArg = "-XX:+UnlockDiagnosticVMOptions"; String nmtArg = "-XX:NativeMemoryTracking=detail"; @@ -75,7 +75,10 @@ public class ArchiveRelocationTest { TestCommon.run("-cp", appJar, unlockArg, runRelocArg, logArg, mainClass) .assertNormalExit(output -> { if (run_reloc) { - output.shouldContain("Try to map archive(s) at an alternative address"); + output.shouldContain("ArchiveRelocationMode == 1: always map archive(s) at an alternative address") + .shouldContain("Try to map archive(s) at an alternative address"); + } else { + output.shouldContain("ArchiveRelocationMode: 0"); } }); } diff --git a/test/hotspot/jtreg/runtime/cds/appcds/TestSerialGCWithCDS.java b/test/hotspot/jtreg/runtime/cds/appcds/TestSerialGCWithCDS.java index 7dbdc43f443..402ad0b8744 100644 --- a/test/hotspot/jtreg/runtime/cds/appcds/TestSerialGCWithCDS.java +++ b/test/hotspot/jtreg/runtime/cds/appcds/TestSerialGCWithCDS.java @@ -128,14 +128,14 @@ public class TestSerialGCWithCDS { "Hello"); out.shouldNotContain(errMsg); - System.out.println("2. Exec with " + execGC + " and test ArchiveRelocationMode"); + System.out.println("2. Exec with " + execGC + " and test ArchiveRelocationMode=0"); out = TestCommon.exec(helloJar, execGC, small1, small2, coops, "-Xlog:cds,cds+heap", - "-XX:ArchiveRelocationMode=1", // always relocate shared metadata + "-XX:ArchiveRelocationMode=0", // may relocate shared metadata "Hello"); out.shouldNotContain(errMsg); diff --git a/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java index 8758a397001..9e59a334670 100644 --- a/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java +++ b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicArchiveRelocationTest.java @@ -79,9 +79,9 @@ public class DynamicArchiveRelocationTest extends DynamicArchiveTestBase { String appJar = ClassFileInstaller.getJarPath("hello.jar"); String mainClass = "Hello"; - String forceRelocation = "-XX:ArchiveRelocationMode=1"; - String dumpTopRelocArg = dump_top_reloc ? forceRelocation : "-showversion"; - String runRelocArg = run_reloc ? forceRelocation : "-showversion"; + String maybeRelocation = "-XX:ArchiveRelocationMode=0"; + String dumpTopRelocArg = dump_top_reloc ? "-showversion" : maybeRelocation; + String runRelocArg = run_reloc ? "-showversion" : maybeRelocation; String logArg = "-Xlog:cds=debug,cds+reloc=debug"; String baseArchiveName = getNewArchiveName("base"); @@ -89,6 +89,7 @@ public class DynamicArchiveRelocationTest extends DynamicArchiveTestBase { String runtimeMsg = "Try to map archive(s) at an alternative address"; String unlockArg = "-XX:+UnlockDiagnosticVMOptions"; + String relocationModeMsg = "ArchiveRelocationMode: 0"; // (1) Dump base archive (static) @@ -105,6 +106,8 @@ public class DynamicArchiveRelocationTest extends DynamicArchiveTestBase { .assertNormalExit(output -> { if (dump_top_reloc) { output.shouldContain(runtimeMsg); + } else { + output.shouldContain(relocationModeMsg); } }); @@ -116,6 +119,8 @@ public class DynamicArchiveRelocationTest extends DynamicArchiveTestBase { .assertNormalExit(output -> { if (run_reloc) { output.shouldContain(runtimeMsg); + } else { + output.shouldContain(relocationModeMsg); } }); }