8260934: java/lang/StringBuilder/HugeCapacity.java fails without Compact Strings

Reviewed-by: iklam
diff --git a/test/jdk/java/lang/StringBuilder/HugeCapacity.java b/test/jdk/java/lang/StringBuilder/HugeCapacity.java
index 7da3e36..9f1617a 100644
--- a/test/jdk/java/lang/StringBuilder/HugeCapacity.java
+++ b/test/jdk/java/lang/StringBuilder/HugeCapacity.java
@@ -27,14 +27,20 @@
  * @summary Capacity should not get close to Integer.MAX_VALUE unless
  *          necessary
  * @requires (sun.arch.data.model == "64" & os.maxMemory >= 6G)
- * @run main/othervm -Xms5G -Xmx5G HugeCapacity
+ * @run main/othervm -Xms5G -Xmx5G -XX:+CompactStrings HugeCapacity true
+ * @run main/othervm -Xms5G -Xmx5G -XX:-CompactStrings HugeCapacity false
  */
 
 public class HugeCapacity {
     private static int failures = 0;
 
     public static void main(String[] args) {
-        testLatin1();
+        if (args.length == 0) {
+           throw new IllegalArgumentException("Need the argument");
+        }
+        boolean isCompact = Boolean.parseBoolean(args[0]);
+
+        testLatin1(isCompact);
         testUtf16();
         testHugeInitialString();
         testHugeInitialCharSequence();
@@ -43,11 +49,12 @@
         }
     }
 
-    private static void testLatin1() {
+    private static void testLatin1(boolean isCompact) {
         try {
+            int divisor = isCompact ? 2 : 4;
             StringBuilder sb = new StringBuilder();
-            sb.ensureCapacity(Integer.MAX_VALUE / 2);
-            sb.ensureCapacity(Integer.MAX_VALUE / 2 + 1);
+            sb.ensureCapacity(Integer.MAX_VALUE / divisor);
+            sb.ensureCapacity(Integer.MAX_VALUE / divisor + 1);
         } catch (OutOfMemoryError oom) {
             oom.printStackTrace();
             failures++;