| // 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)); |