test/gc/arguments/TestUseCompressedOopsErgoTools.java

Print this page

        

*** 40,53 **** } } class TestUseCompressedOopsErgoTools { ! private static long getClassMetaspaceSize() { HotSpotDiagnosticMXBean diagnostic = ManagementFactoryHelper.getDiagnosticMXBean(); ! VMOption option = diagnostic.getVMOption("ClassMetaspaceSize"); return Long.parseLong(option.getValue()); } public static long getMaxHeapForCompressedOops(String[] vmargs) throws Exception { --- 40,53 ---- } } class TestUseCompressedOopsErgoTools { ! private static long getCompressedClassSpaceSize() { HotSpotDiagnosticMXBean diagnostic = ManagementFactoryHelper.getDiagnosticMXBean(); ! VMOption option = diagnostic.getVMOption("CompressedClassSpaceSize"); return Long.parseLong(option.getValue()); } public static long getMaxHeapForCompressedOops(String[] vmargs) throws Exception {
*** 130,146 **** checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops, true); checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops - 1, true); checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops + 1, false); ! // use a different ClassMetaspaceSize ! String classMetaspaceSizeArg = "-XX:ClassMetaspaceSize=" + 2 * getClassMetaspaceSize(); ! maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, classMetaspaceSizeArg)); ! ! checkUseCompressedOops(join(gcflags, classMetaspaceSizeArg), maxHeapForCompressedOops, true); ! checkUseCompressedOops(join(gcflags, classMetaspaceSizeArg), maxHeapForCompressedOops - 1, true); ! checkUseCompressedOops(join(gcflags, classMetaspaceSizeArg), maxHeapForCompressedOops + 1, false); } private static void checkUseCompressedOops(String[] args, long heapsize, boolean expectUseCompressedOops) throws Exception { ArrayList<String> finalargs = new ArrayList<String>(); finalargs.addAll(Arrays.asList(args)); --- 130,146 ---- checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops, true); checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops - 1, true); checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops + 1, false); ! // use a different CompressedClassSpaceSize ! String compressedClassSpaceSizeArg = "-XX:CompressedClassSpaceSize=" + 2 * getCompressedClassSpaceSize(); ! maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, compressedClassSpaceSizeArg)); ! ! checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops, true); ! checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops - 1, true); ! checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops + 1, false); } private static void checkUseCompressedOops(String[] args, long heapsize, boolean expectUseCompressedOops) throws Exception { ArrayList<String> finalargs = new ArrayList<String>(); finalargs.addAll(Arrays.asList(args));
*** 150,170 **** String output = expectValid(finalargs.toArray(new String[0])); boolean actualUseCompressedOops = getFlagBoolValue(" UseCompressedOops", output); ! if (expectUseCompressedOops != actualUseCompressedOops) { ! throw new RuntimeException("Expected use of compressed oops: " + expectUseCompressedOops + " but was: " + actualUseCompressedOops); ! } } private static boolean getFlagBoolValue(String flag, String where) { Matcher m = Pattern.compile(flag + "\\s+:?= (true|false)").matcher(where); if (!m.find()) { throw new RuntimeException("Could not find value for flag " + flag + " in output string"); } ! String match = m.group(1).equals("true"); } private static String expect(String[] flags, boolean hasWarning, boolean hasError, int errorcode) throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(flags); OutputAnalyzer output = new OutputAnalyzer(pb.start()); --- 150,168 ---- String output = expectValid(finalargs.toArray(new String[0])); boolean actualUseCompressedOops = getFlagBoolValue(" UseCompressedOops", output); ! Asserts.assertEQ(expectUseCompressedOops, actualUseCompressedOops); } private static boolean getFlagBoolValue(String flag, String where) { Matcher m = Pattern.compile(flag + "\\s+:?= (true|false)").matcher(where); if (!m.find()) { throw new RuntimeException("Could not find value for flag " + flag + " in output string"); } ! return m.group(1).equals("true"); } private static String expect(String[] flags, boolean hasWarning, boolean hasError, int errorcode) throws Exception { ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(flags); OutputAnalyzer output = new OutputAnalyzer(pb.start());