< prev index next >

test/hotspot/jtreg/runtime/appcds/cacheObject/DifferentHeapSizes.java

Print this page

*** 38,47 **** --- 38,49 ---- import jdk.test.lib.process.OutputAnalyzer; import sun.hotspot.WhiteBox; import jdk.test.lib.cds.CDSTestUtils; public class DifferentHeapSizes { + static final String DEDUP = "-XX:+UseStringDeduplication"; // This increases code coverage. + static class Scenario { int dumpSize; // in MB int runSizes[]; // in MB Scenario(int ds, int... rs) { dumpSize = ds;
*** 57,67 **** new Scenario( 17000, 32, 512, 2048, 4097, 8500, 31000, 40000), new Scenario( 31000, 32, 512, 2048, 4097, 8500, 17000, 40000) }; public static void main(String[] args) throws Exception { - String dedup = "-XX:+UseStringDeduplication"; // This increases code coverage. JarBuilder.getOrCreateHelloJar(); String appJar = TestCommon.getTestJar("hello.jar"); String appClasses[] = TestCommon.list("Hello"); for (Scenario s : scenarios) { --- 59,68 ----
*** 69,79 **** OutputAnalyzer output = TestCommon.dump(appJar, appClasses, dumpXmx); for (int runSize : s.runSizes) { String runXmx = "-Xmx" + runSize + "m"; CDSTestUtils.Result result = TestCommon.run("-cp", appJar, "-showversion", ! "-Xlog:cds", runXmx, dedup, "Hello"); if (runSize < 32768) { result .assertNormalExit("Hello World") .assertNormalExit(out -> { out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP); --- 70,80 ---- OutputAnalyzer output = TestCommon.dump(appJar, appClasses, dumpXmx); for (int runSize : s.runSizes) { String runXmx = "-Xmx" + runSize + "m"; CDSTestUtils.Result result = TestCommon.run("-cp", appJar, "-showversion", ! "-Xlog:cds", runXmx, DEDUP, "Hello"); if (runSize < 32768) { result .assertNormalExit("Hello World") .assertNormalExit(out -> { out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP);
*** 82,100 **** } else { result.assertAbnormalExit("Unable to use shared archive: UseCompressedOops and UseCompressedClassPointers must be on for UseSharedSpaces."); } } } - String flag = "HeapBaseMinAddress"; - String xxflag = "-XX:" + flag + "="; - String mx = "-Xmx128m"; - long base = WhiteBox.getWhiteBox().getSizeTVMFlag(flag).longValue(); ! TestCommon.dump(appJar, appClasses, mx, xxflag + base); ! TestCommon.run("-cp", appJar, "-showversion", "-Xlog:cds", mx, xxflag + (base + 256 * 1024 * 1024), dedup, "Hello") .assertNormalExit("Hello World") .assertNormalExit(out -> { out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP); out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE); }); } } --- 83,129 ---- } else { result.assertAbnormalExit("Unable to use shared archive: UseCompressedOops and UseCompressedClassPointers must be on for UseSharedSpaces."); } } } ! // Test various settings of -XX:HeapBaseMinAddress that would trigger ! // "CDS heap data need to be relocated because the desired range ... is outside of the heap" ! long default_base = WhiteBox.getWhiteBox().getSizeTVMFlag("HeapBaseMinAddress").longValue(); ! long M = 1024 * 1024; ! long bases[] = new long[] { ! /* dump xmx */ /* run xmx */ /* dump base */ /* run base */ ! 128 * M, 128 * M, default_base, default_base + 256L * 1024 * 1024, ! 128 * M, 16376 * M, 0x0000000119200000L, -1, ! }; ! ! for (int i = 0; i < bases.length; i += 4) { ! String dump_xmx = getXmx(bases[i+0]); ! String run_xmx = getXmx(bases[i+1]); ! String dump_base = getHeapBaseMinAddress(bases[i+2]); ! String run_base = getHeapBaseMinAddress(bases[i+3]); ! ! TestCommon.dump(appJar, appClasses, dump_xmx, dump_base); ! TestCommon.run("-cp", appJar, "-showversion", "-Xlog:cds", run_xmx, run_base, DEDUP, "Hello") .assertNormalExit("Hello World") .assertNormalExit(out -> { out.shouldNotContain(CDSTestUtils.MSG_RANGE_NOT_WITHIN_HEAP); out.shouldNotContain(CDSTestUtils.MSG_RANGE_ALREADT_IN_USE); }); } + } + + static String getXmx(long value) { + if (value < 0) { + return "-showversion"; // This is a harmless command line arg + } else { + return "-Xmx" + (value / 1024 / 1024) + "m"; + } + } + static String getHeapBaseMinAddress(long value) { + if (value < 0) { + return "-showversion"; // This is a harmless command line arg + } else { + return "-XX:HeapBaseMinAddress=0x" + Long.toHexString(value); + } + } }
< prev index next >