// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var stdlib = this; var foreign = {}; var heap = new ArrayBuffer(64 * 1024); var switch1 = (function(stdlib, foreign, heap) { "use asm"; function switch1(i) { i = i|0; switch (i | 0) { case 0: return 1; case 1: return 2; default: return i|0; } return i | 0; } return { switch1: switch1 }; })(stdlib, foreign, heap).switch1; assertEquals(1, switch1(0)); assertEquals(2, switch1(1)); for (var i = -2147483648; i < 2147483648; i += 3999773) { assertEquals(i, switch1(i)); } var switch2 = (function(stdlib, foreign, heap) { "use asm"; function switch2(i) { i = i|0; var j = 0; switch (i | 0) { case 0: j = 1; break; case 1: j = 2; break; case 2: j = 3; break; default: j = i|0; break; } return j|0; } return { switch2: switch2 }; })(stdlib, foreign, heap).switch2; assertEquals(1, switch2(0)); assertEquals(2, switch2(1)); assertEquals(3, switch2(2)); for (var i = -2147483648; i < 2147483648; i += 3999773) { assertEquals(i, switch2(i)); } var switch3 = (function(stdlib, foreign, heap) { "use asm"; function switch3(i) { i = i|0; var j = 0; switch (i | 0) { case 0: case 1: j = 1; break; case 2: case 3: j = 2; break; case 4: case 5: j = 3; break; default: j = 0; break; } return j|0; } return { switch3: switch3 }; })(stdlib, foreign, heap).switch3; assertEquals(1, switch3(0)); assertEquals(1, switch3(1)); assertEquals(2, switch3(2)); assertEquals(2, switch3(3)); assertEquals(3, switch3(4)); assertEquals(3, switch3(5)); for (var i = -2147483648; i < 2147483648; i += 3999773) { assertEquals(0, switch3(i)); } var switch4 = (function(stdlib, foreign, heap) { "use asm"; function switch4(i) { i = i|0; switch (i | 0) { case -1: case 1: return 0; case -2: case 2: return 1; case -3: case 3: return 2; case -8: case 8: return 3; default: return 4; } return 0; // needed for validation } return { switch4: switch4 }; })(stdlib, foreign, heap).switch4; assertEquals(4, switch4(0)); assertEquals(0, switch4(-1)); assertEquals(0, switch4(1)); assertEquals(1, switch4(-2)); assertEquals(1, switch4(2)); assertEquals(3, switch4(-8)); assertEquals(3, switch4(8)); assertEquals(4, switch4(-123456789)); assertEquals(4, switch4(123456789));