108 public static void checkCompressedOopsErgo(String[] gcflags) throws Exception {
109 long maxHeapForCompressedOops = getMaxHeapForCompressedOops(gcflags);
110
111 checkUseCompressedOops(gcflags, maxHeapForCompressedOops, true);
112 checkUseCompressedOops(gcflags, maxHeapForCompressedOops - 1, true);
113 checkUseCompressedOops(gcflags, maxHeapForCompressedOops + 1, false);
114
115 // the use of HeapBaseMinAddress should not change the outcome
116 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops, true);
117 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops - 1, true);
118 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops + 1, false);
119
120 // use a different object alignment
121 maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"));
122
123 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops, true);
124 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops - 1, true);
125 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops + 1, false);
126
127 // use a different CompressedClassSpaceSize
128 String compressedClassSpaceSizeArg = "-XX:CompressedClassSpaceSize=" + 2 * getCompressedClassSpaceSize();
129 maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, compressedClassSpaceSizeArg));
130
131 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops, true);
132 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops - 1, true);
133 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops + 1, false);
134 }
135
136 private static void checkUseCompressedOops(String[] args, long heapsize, boolean expectUseCompressedOops) throws Exception {
137 ArrayList<String> finalargs = new ArrayList<String>();
138 finalargs.addAll(Arrays.asList(args));
139 finalargs.add("-Xmx" + heapsize);
140 finalargs.add("-XX:+PrintFlagsFinal");
141 finalargs.add("-version");
142
143 String output = expectValid(finalargs.toArray(new String[0]));
144
145 boolean actualUseCompressedOops = getFlagBoolValue(" UseCompressedOops", output);
146
147 Asserts.assertEQ(expectUseCompressedOops, actualUseCompressedOops);
148 }
|
108 public static void checkCompressedOopsErgo(String[] gcflags) throws Exception {
109 long maxHeapForCompressedOops = getMaxHeapForCompressedOops(gcflags);
110
111 checkUseCompressedOops(gcflags, maxHeapForCompressedOops, true);
112 checkUseCompressedOops(gcflags, maxHeapForCompressedOops - 1, true);
113 checkUseCompressedOops(gcflags, maxHeapForCompressedOops + 1, false);
114
115 // the use of HeapBaseMinAddress should not change the outcome
116 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops, true);
117 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops - 1, true);
118 checkUseCompressedOops(join(gcflags, "-XX:HeapBaseMinAddress=32G"), maxHeapForCompressedOops + 1, false);
119
120 // use a different object alignment
121 maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"));
122
123 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops, true);
124 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops - 1, true);
125 checkUseCompressedOops(join(gcflags, "-XX:ObjectAlignmentInBytes=16"), maxHeapForCompressedOops + 1, false);
126
127 // use a different CompressedClassSpaceSize
128 String compressedClassSpaceSizeArg = "-XX:CompressedClassSpaceSize=" + getCompressedClassSpaceSize() / 2;
129 maxHeapForCompressedOops = getMaxHeapForCompressedOops(join(gcflags, compressedClassSpaceSizeArg));
130
131 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops, true);
132 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops - 1, true);
133 checkUseCompressedOops(join(gcflags, compressedClassSpaceSizeArg), maxHeapForCompressedOops + 1, false);
134 }
135
136 private static void checkUseCompressedOops(String[] args, long heapsize, boolean expectUseCompressedOops) throws Exception {
137 ArrayList<String> finalargs = new ArrayList<String>();
138 finalargs.addAll(Arrays.asList(args));
139 finalargs.add("-Xmx" + heapsize);
140 finalargs.add("-XX:+PrintFlagsFinal");
141 finalargs.add("-version");
142
143 String output = expectValid(finalargs.toArray(new String[0]));
144
145 boolean actualUseCompressedOops = getFlagBoolValue(" UseCompressedOops", output);
146
147 Asserts.assertEQ(expectUseCompressedOops, actualUseCompressedOops);
148 }
|