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 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 return 28; | 675 return 28; |
676 } | 676 } |
677 return 0; | 677 return 0; |
678 } | 678 } |
679 | 679 |
680 return {caller:caller}; | 680 return {caller:caller}; |
681 } | 681 } |
682 | 682 |
683 assertWasm(28, TestModDoubleNegative); | 683 assertWasm(28, TestModDoubleNegative); |
684 | 684 |
| 685 |
685 (function () { | 686 (function () { |
686 function TestNamedFunctions() { | 687 function TestNamedFunctions() { |
687 "use asm"; | 688 "use asm"; |
688 | 689 |
689 var a = 0.0; | 690 var a = 0.0; |
690 var b = 0.0; | 691 var b = 0.0; |
691 | 692 |
692 function add() { | 693 function add() { |
693 return +(a + b); | 694 return +(a + b); |
694 } | 695 } |
695 | 696 |
696 function init() { | 697 function init() { |
697 a = 43.25; | 698 a = 43.25; |
698 b = 34.25; | 699 b = 34.25; |
699 } | 700 } |
700 | 701 |
701 return {init:init, | 702 return {init:init, |
702 add:add}; | 703 add:add}; |
703 } | 704 } |
704 | 705 |
705 var module = Wasm.instantiateModuleFromAsm(TestNamedFunctions.toString()); | 706 var module = Wasm.instantiateModuleFromAsm(TestNamedFunctions.toString()); |
706 module.init(); | 707 module.init(); |
707 assertEquals(77.5, module.add()); | 708 assertEquals(77.5, module.add()); |
708 })(); | 709 })(); |
709 | 710 |
| 711 |
710 (function () { | 712 (function () { |
711 function TestGlobalsWithInit() { | 713 function TestGlobalsWithInit() { |
712 "use asm"; | 714 "use asm"; |
713 | 715 |
714 var a = 43.25; | 716 var a = 43.25; |
715 var b = 34.25; | 717 var b = 34.25; |
716 | 718 |
717 function add() { | 719 function add() { |
718 return +(a + b); | 720 return +(a + b); |
719 } | 721 } |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1351 return ((a * 3) + (4 * a)) | 0; | 1353 return ((a * 3) + (4 * a)) | 0; |
1352 } | 1354 } |
1353 return {func: func}; | 1355 return {func: func}; |
1354 } | 1356 } |
1355 | 1357 |
1356 var m = Wasm.instantiateModuleFromAsm(Module.toString()); | 1358 var m = Wasm.instantiateModuleFromAsm(Module.toString()); |
1357 assertEquals(7, m.func()); | 1359 assertEquals(7, m.func()); |
1358 })(); | 1360 })(); |
1359 | 1361 |
1360 | 1362 |
| 1363 (function TestBadAssignDoubleFromIntish() { |
| 1364 function Module(stdlib, foreign, heap) { |
| 1365 "use asm"; |
| 1366 function func() { |
| 1367 var a = 1; |
| 1368 var b = 3.0; |
| 1369 b = a; |
| 1370 } |
| 1371 return {func: func}; |
| 1372 } |
| 1373 assertThrows(function() { |
| 1374 Wasm.instantiateModuleFromAsm(Module.toString()); |
| 1375 }); |
| 1376 })(); |
| 1377 |
| 1378 |
| 1379 (function TestBadAssignIntFromDouble() { |
| 1380 function Module(stdlib, foreign, heap) { |
| 1381 "use asm"; |
| 1382 function func() { |
| 1383 var a = 1; |
| 1384 var b = 3.0; |
| 1385 a = b; |
| 1386 } |
| 1387 return {func: func}; |
| 1388 } |
| 1389 assertThrows(function() { |
| 1390 Wasm.instantiateModuleFromAsm(Module.toString()); |
| 1391 }); |
| 1392 })(); |
| 1393 |
| 1394 |
1361 (function TestBadMultiplyIntish() { | 1395 (function TestBadMultiplyIntish() { |
1362 function Module(stdlib, foreign, heap) { | 1396 function Module(stdlib, foreign, heap) { |
1363 "use asm"; | 1397 "use asm"; |
1364 function func() { | 1398 function func() { |
1365 var a = 1; | 1399 var a = 1; |
1366 return ((a + a) * 4) | 0; | 1400 return ((a + a) * 4) | 0; |
1367 } | 1401 } |
1368 return {func: func}; | 1402 return {func: func}; |
1369 } | 1403 } |
1370 assertThrows(function() { | 1404 assertThrows(function() { |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1489 u0xffffffff: u0xffffffff, | 1523 u0xffffffff: u0xffffffff, |
1490 u0x80000000: u0x80000000, | 1524 u0x80000000: u0x80000000, |
1491 u0x87654321: u0x87654321, | 1525 u0x87654321: u0x87654321, |
1492 }; | 1526 }; |
1493 } | 1527 } |
1494 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); | 1528 var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
1495 assertEquals(0xffffffff, wasm.u0xffffffff()); | 1529 assertEquals(0xffffffff, wasm.u0xffffffff()); |
1496 assertEquals(0x80000000, wasm.u0x80000000()); | 1530 assertEquals(0x80000000, wasm.u0x80000000()); |
1497 assertEquals(0x87654321, wasm.u0x87654321()); | 1531 assertEquals(0x87654321, wasm.u0x87654321()); |
1498 })(); | 1532 })(); |
OLD | NEW |