# HG changeset patch # User Jaroslav Tulach # Date 1358249179 -3600 # Node ID b0e82dcf51fbca38537d25022e2a042448b8f15d # Parent f2f769bafeef46237b8e671b9e5c04101bf37a2f Initialize multi dimensional arrays with 0 for primitive types diff -r f2f769bafeef -r b0e82dcf51fb vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Jan 15 11:53:07 2013 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Jan 15 12:26:19 2013 +0100 @@ -19,6 +19,7 @@ import java.io.IOException; import java.io.InputStream; +import org.apidesign.bck2brwsr.core.JavaScriptBody; import org.apidesign.javap.AnnotationParser; import org.apidesign.javap.ClassData; import org.apidesign.javap.FieldData; @@ -957,7 +958,8 @@ append(".length; i" + d).append("++) {"); out.append("\n var a" + d). append (" = new Array(l" + d).append(").initWith('") - .append(typeName).append("', null);"); + .append(typeName).append("', ") + .append(typeName.length() == 2 ? "0" : "null").append(");"); out.append("\n a" + (d - 1)).append("[i" + d).append("] = a" + d). append(";"); } diff -r f2f769bafeef -r b0e82dcf51fb vm/src/test/java/org/apidesign/vm4brwsr/Array.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Tue Jan 15 11:53:07 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Array.java Tue Jan 15 12:26:19 2013 +0100 @@ -51,6 +51,16 @@ return doubles[4][0]; } + static double[][] dbls = new double[1][2]; + public static double twoDoubles() { + return dbls[0][0] + dbls[0][0]; + } + + static int[][] tints = new int[1][2]; + public static int twoInts() { + return tints[0][0] + tints[0][0]; + } + private static final Array[] ARR = { new Array(), new Array(), new Array() }; private static Array[][] arr() { diff -r f2f769bafeef -r b0e82dcf51fb vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Tue Jan 15 11:53:07 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ArrayTest.java Tue Jan 15 12:26:19 2013 +0100 @@ -53,6 +53,17 @@ Double.valueOf(105) ); } + + @Test public void twoDoubles() throws Exception { + assertExec("Elements are initialized", Array.class, "twoDoubles__D", + Double.valueOf(0) + ); + } + @Test public void twoInts() throws Exception { + assertExec("Elements are initialized", Array.class, "twoInts__I", + Double.valueOf(0) + ); + } @Test public void doesCopyArrayWork() throws Exception { assertExec("Returns 'a'", Array.class, "copyArray__C", Double.valueOf('a')); diff -r f2f769bafeef -r b0e82dcf51fb vmtest/src/test/java/org/apidesign/bck2brwsr/tck/IntegerArithmeticTest.java --- a/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/IntegerArithmeticTest.java Tue Jan 15 11:53:07 2013 +0100 +++ b/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/IntegerArithmeticTest.java Tue Jan 15 12:26:19 2013 +0100 @@ -93,21 +93,12 @@ @Compare public int sumTwoDimensions() { int[][] matrix = createMatrix(4, 3); - int sum = 0; - for (int i = 0; i < matrix.length; i++) { - for (int j = 0; j < matrix[i].length; j++) { - sum += matrix[i][j]; - } - } - return sum; + matrix[0][0] += 10; + return matrix[0][0]; } static int[][] createMatrix(int x, int y) { - int[][] m = new int[x][y]; - for (int i = 0; i < Math.min(x, y); i++) { - m[i][i] = i; - } - return m; + return new int[x][y]; } @Factory