Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Side by Side Diff: test/mjsunit/wasm/asm-wasm.js

Issue 1838973002: optimized switch implementation (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698