OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --expose-wasm | 5 // Flags: --expose-wasm |
6 | 6 |
7 function assertWasm(expected, func, ffi) { | 7 function assertWasm(expected, func, ffi) { |
8 print("Testing " + func.name + "..."); | 8 print("Testing " + func.name + "..."); |
9 assertEquals(expected, Wasm.instantiateModuleFromAsm( | 9 assertEquals(expected, Wasm.instantiateModuleFromAsm( |
10 func.toString(), ffi).caller()); | 10 func.toString(), ffi).caller()); |
(...skipping 1475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1486 u0xffffffff: u0xffffffff, | 1486 u0xffffffff: u0xffffffff, |
1487 u0x80000000: u0x80000000, | 1487 u0x80000000: u0x80000000, |
1488 u0x87654321: u0x87654321, | 1488 u0x87654321: u0x87654321, |
1489 }; | 1489 }; |
1490 } | 1490 } |
1491 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); | 1491 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
1492 assertEquals(0xffffffff, wasm.u0xffffffff()); | 1492 assertEquals(0xffffffff, wasm.u0xffffffff()); |
1493 assertEquals(0x80000000, wasm.u0x80000000()); | 1493 assertEquals(0x80000000, wasm.u0x80000000()); |
1494 assertEquals(0x87654321, wasm.u0x87654321()); | 1494 assertEquals(0x87654321, wasm.u0x87654321()); |
1495 })(); | 1495 })(); |
| 1496 |
| 1497 (function TestSwitchWithBrTable() { |
| 1498 function asmModule() { |
| 1499 "use asm"; |
| 1500 function main(x) { |
| 1501 x = x|0; |
| 1502 switch(x|0) { |
| 1503 case 14: return 14; |
| 1504 case 12: return 12; |
| 1505 case 15: return 15; |
| 1506 case 19: return 19; |
| 1507 case 18: return 18; |
| 1508 case 16: return 16; |
| 1509 default: return -1; |
| 1510 } |
| 1511 return 0; |
| 1512 } |
| 1513 return { |
| 1514 main: main, |
| 1515 }; |
| 1516 } |
| 1517 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| 1518 assertEquals(12, wasm.main(12)); |
| 1519 assertEquals(14, wasm.main(14)); |
| 1520 assertEquals(15, wasm.main(15)); |
| 1521 assertEquals(16, wasm.main(16)); |
| 1522 assertEquals(18, wasm.main(18)); |
| 1523 assertEquals(19, wasm.main(19)); |
| 1524 assertEquals(-1, wasm.main(21)); |
| 1525 })(); |
| 1526 |
| 1527 (function TestSwitchWithBalancedTree() { |
| 1528 function asmModule() { |
| 1529 "use asm"; |
| 1530 function main(x) { |
| 1531 x = x|0; |
| 1532 switch(x|0) { |
| 1533 case 5: return 5; |
| 1534 case 1: return 1; |
| 1535 case 6: return 6; |
| 1536 case 9: return 9; |
| 1537 case -4: return -4; |
| 1538 } |
| 1539 return 0; |
| 1540 } |
| 1541 return { |
| 1542 main: main, |
| 1543 }; |
| 1544 } |
| 1545 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| 1546 assertEquals(-4, wasm.main(-4)); |
| 1547 assertEquals(1, wasm.main(1)); |
| 1548 assertEquals(5, wasm.main(5)); |
| 1549 assertEquals(6, wasm.main(6)); |
| 1550 assertEquals(9, wasm.main(9)); |
| 1551 assertEquals(0, wasm.main(11)); |
| 1552 })(); |
| 1553 |
| 1554 (function TestSwitchHybrid() { |
| 1555 function asmModule() { |
| 1556 "use asm"; |
| 1557 function main(x) { |
| 1558 x = x|0; |
| 1559 switch(x|0) { |
| 1560 case 1: return 1; |
| 1561 case 2: return 2; |
| 1562 case 3: return 3; |
| 1563 case 4: return 4; |
| 1564 case 7: return 7; |
| 1565 case 10: return 10; |
| 1566 case 11: return 11; |
| 1567 case 12: return 12; |
| 1568 case 13: return 13; |
| 1569 case 16: return 16; |
| 1570 default: return -1; |
| 1571 } |
| 1572 return 0; |
| 1573 } |
| 1574 return { |
| 1575 main: main, |
| 1576 }; |
| 1577 } |
| 1578 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| 1579 assertEquals(1, wasm.main(1)); |
| 1580 assertEquals(2, wasm.main(2)); |
| 1581 assertEquals(3, wasm.main(3)); |
| 1582 assertEquals(4, wasm.main(4)); |
| 1583 assertEquals(7, wasm.main(7)); |
| 1584 assertEquals(10, wasm.main(10)); |
| 1585 assertEquals(11, wasm.main(11)); |
| 1586 assertEquals(12, wasm.main(12)); |
| 1587 assertEquals(13, wasm.main(13)); |
| 1588 assertEquals(16, wasm.main(16)); |
| 1589 assertEquals(-1, wasm.main(20)); |
| 1590 })(); |
| 1591 |
| 1592 (function TestSwitchWithDefaultOnly() { |
| 1593 function asmModule() { |
| 1594 "use asm"; |
| 1595 function main(x) { |
| 1596 x = x|0; |
| 1597 switch(x|0) { |
| 1598 default: return -10; |
| 1599 } |
| 1600 return 0; |
| 1601 } |
| 1602 return { |
| 1603 main: main, |
| 1604 }; |
| 1605 } |
| 1606 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| 1607 assertEquals(-10, wasm.main(2)); |
| 1608 assertEquals(-10, wasm.main(54)); |
| 1609 })(); |
| 1610 |
| 1611 (function TestEmptySwitch() { |
| 1612 function asmModule() { |
| 1613 "use asm"; |
| 1614 function main(x) { |
| 1615 x = x|0; |
| 1616 switch(x|0) { |
| 1617 } |
| 1618 return 73; |
| 1619 } |
| 1620 return { |
| 1621 main: main, |
| 1622 }; |
| 1623 } |
| 1624 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
| 1625 assertEquals(73, wasm.main(7)); |
| 1626 })(); |
OLD | NEW |