# HG changeset patch # User Jaroslav Tulach # Date 1362947330 -3600 # Node ID 24096bd2b38a59022746097b21d194b663a4bd5e # Parent b0b23e5ebf9d26ab6ca1a7108a32ed4e055e8622 Expand the array rather than copying it diff -r b0b23e5ebf9d -r 24096bd2b38a rt/emul/mini/src/main/java/java/lang/AbstractStringBuilder.java --- a/rt/emul/mini/src/main/java/java/lang/AbstractStringBuilder.java Sun Mar 10 21:28:00 2013 +0100 +++ b/rt/emul/mini/src/main/java/java/lang/AbstractStringBuilder.java Sun Mar 10 21:28:50 2013 +0100 @@ -126,7 +126,7 @@ throw new OutOfMemoryError(); newCapacity = Integer.MAX_VALUE; } - value = copyOf(value, newCapacity); + value = System.expandArray(value, newCapacity); } /** diff -r b0b23e5ebf9d -r 24096bd2b38a rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java Sun Mar 10 21:28:00 2013 +0100 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java Sun Mar 10 21:28:50 2013 +0100 @@ -54,6 +54,11 @@ ) public static native byte[] expandArray(byte[] arr, int expectedSize); + @JavaScriptBody(args = { "arr", "expectedSize" }, body = + "while (expectedSize-- > arr.length) { arr.push(0); }; return arr;" + ) + public static native char[] expandArray(char[] arr, int expectedSize); + @JavaScriptBody(args = {}, body = "return new Date().getTime();") private static native double currentTimeMillisDouble();