# HG changeset patch # User Jaroslav Tulach # Date 1420636642 -3600 # Node ID d2a5a7a0e167890623c7c2cc22fd901c982fbca7 # Parent 9361d778afe4c322992d910358b503ab4e11056d Using >>> in shr64 diff -r 9361d778afe4 -r d2a5a7a0e167 rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/compact/tck/CollectionsTest.java --- a/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/compact/tck/CollectionsTest.java Sat Dec 27 20:38:32 2014 +0100 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/compact/tck/CollectionsTest.java Wed Jan 07 14:17:22 2015 +0100 @@ -113,6 +113,20 @@ Arrays.toString(ret); } + @Compare public int collectionsShuffle() { + ArrayList positions = new ArrayList<>(); + for (int i = 0; i < 16; i++) { + positions.add(i); + } + Collections.shuffle(positions); + + int sum = 0; + for (Integer p : positions) { + sum += p; + } + return sum; + } + @Factory public static Object[] create() { return VMTest.create(CollectionsTest.class); diff -r 9361d778afe4 -r d2a5a7a0e167 rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/LongArithmeticTest.java --- a/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/LongArithmeticTest.java Sat Dec 27 20:38:32 2014 +0100 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/LongArithmeticTest.java Wed Jan 07 14:17:22 2015 +0100 @@ -38,7 +38,7 @@ private static long mul(long x, long y) { return (x * y); } - + private static long div(long x, long y) { return (x / y); } @@ -82,6 +82,14 @@ private static double dadd(double x, double y) { return x + y; } + + private static long mul64shr64(long base, int mul, int shr) { + long tmp = base * mul; + if (shr == -1) { + return tmp; + } + return tmp >> shr; + } public static int compare(long x, long y, int zero) { final int xyResult = compareL(x, y, zero); @@ -411,6 +419,21 @@ return compare(0x8000000000000000l, 0x7fffffffffffffffl, 0); } + @Compare public int intConversionProblemInRandom() { + long res = mul64shr64(16, 1561751147, 31); + return (int) res; + } + + @Compare public long shiftProblemInRandom() { + long res = mul64shr64(16, 1561751147, 31); + return res; + } + + @Compare public long multiplyProblemInRandom() { + long res = mul64shr64(16, 1561751147, -1); + return res; + } + @Factory public static Object[] create() { return VMTest.create(LongArithmeticTest.class); diff -r 9361d778afe4 -r d2a5a7a0e167 rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Sat Dec 27 20:38:32 2014 +0100 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 07 14:17:22 2015 +0100 @@ -199,7 +199,7 @@ low += (low < 0) ? (__m32 + 1) : 0; return low; } else { - var low = this >> x; + var low = this >>> x; var hi_reminder = this.high32() << (32 - x); low |= hi_reminder; low += (low < 0) ? (__m32 + 1) : 0;