| Index: test/mjsunit/wasm/asm-wasm.js
|
| diff --git a/test/mjsunit/wasm/asm-wasm.js b/test/mjsunit/wasm/asm-wasm.js
|
| index 2efb006436a23333c7bf5bb48d92a46022a7d2d5..b7e866eeb8675a021ccc06633d3dfea4f362a176 100644
|
| --- a/test/mjsunit/wasm/asm-wasm.js
|
| +++ b/test/mjsunit/wasm/asm-wasm.js
|
| @@ -1493,3 +1493,134 @@ assertWasm(1, TestXor);
|
| assertEquals(0x80000000, wasm.u0x80000000());
|
| assertEquals(0x87654321, wasm.u0x87654321());
|
| })();
|
| +
|
| +(function TestSwitchWithBrTable() {
|
| + function asmModule() {
|
| + "use asm";
|
| + function main(x) {
|
| + x = x|0;
|
| + switch(x|0) {
|
| + case 14: return 14;
|
| + case 12: return 12;
|
| + case 15: return 15;
|
| + case 19: return 19;
|
| + case 18: return 18;
|
| + case 16: return 16;
|
| + default: return -1;
|
| + }
|
| + return 0;
|
| + }
|
| + return {
|
| + main: main,
|
| + };
|
| + }
|
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString());
|
| + assertEquals(12, wasm.main(12));
|
| + assertEquals(14, wasm.main(14));
|
| + assertEquals(15, wasm.main(15));
|
| + assertEquals(16, wasm.main(16));
|
| + assertEquals(18, wasm.main(18));
|
| + assertEquals(19, wasm.main(19));
|
| + assertEquals(-1, wasm.main(21));
|
| +})();
|
| +
|
| +(function TestSwitchWithBalancedTree() {
|
| + function asmModule() {
|
| + "use asm";
|
| + function main(x) {
|
| + x = x|0;
|
| + switch(x|0) {
|
| + case 5: return 5;
|
| + case 1: return 1;
|
| + case 6: return 6;
|
| + case 9: return 9;
|
| + case -4: return -4;
|
| + }
|
| + return 0;
|
| + }
|
| + return {
|
| + main: main,
|
| + };
|
| + }
|
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString());
|
| + assertEquals(-4, wasm.main(-4));
|
| + assertEquals(1, wasm.main(1));
|
| + assertEquals(5, wasm.main(5));
|
| + assertEquals(6, wasm.main(6));
|
| + assertEquals(9, wasm.main(9));
|
| + assertEquals(0, wasm.main(11));
|
| +})();
|
| +
|
| +(function TestSwitchHybrid() {
|
| + function asmModule() {
|
| + "use asm";
|
| + function main(x) {
|
| + x = x|0;
|
| + switch(x|0) {
|
| + case 1: return 1;
|
| + case 2: return 2;
|
| + case 3: return 3;
|
| + case 4: return 4;
|
| + case 7: return 7;
|
| + case 10: return 10;
|
| + case 11: return 11;
|
| + case 12: return 12;
|
| + case 13: return 13;
|
| + case 16: return 16;
|
| + default: return -1;
|
| + }
|
| + return 0;
|
| + }
|
| + return {
|
| + main: main,
|
| + };
|
| + }
|
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString());
|
| + assertEquals(1, wasm.main(1));
|
| + assertEquals(2, wasm.main(2));
|
| + assertEquals(3, wasm.main(3));
|
| + assertEquals(4, wasm.main(4));
|
| + assertEquals(7, wasm.main(7));
|
| + assertEquals(10, wasm.main(10));
|
| + assertEquals(11, wasm.main(11));
|
| + assertEquals(12, wasm.main(12));
|
| + assertEquals(13, wasm.main(13));
|
| + assertEquals(16, wasm.main(16));
|
| + assertEquals(-1, wasm.main(20));
|
| +})();
|
| +
|
| +(function TestSwitchWithDefaultOnly() {
|
| + function asmModule() {
|
| + "use asm";
|
| + function main(x) {
|
| + x = x|0;
|
| + switch(x|0) {
|
| + default: return -10;
|
| + }
|
| + return 0;
|
| + }
|
| + return {
|
| + main: main,
|
| + };
|
| + }
|
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString());
|
| + assertEquals(-10, wasm.main(2));
|
| + assertEquals(-10, wasm.main(54));
|
| +})();
|
| +
|
| +(function TestEmptySwitch() {
|
| + function asmModule() {
|
| + "use asm";
|
| + function main(x) {
|
| + x = x|0;
|
| + switch(x|0) {
|
| + }
|
| + return 73;
|
| + }
|
| + return {
|
| + main: main,
|
| + };
|
| + }
|
| + var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString());
|
| + assertEquals(73, wasm.main(7));
|
| +})();
|
|
|