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

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

Issue 2745393002: [wasm][asm.js] Fix asm.js in tests to be more strictly valid. (Closed)
Patch Set: Created 3 years, 9 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: --validate-asm --allow-natives-syntax 5 // Flags: --validate-asm --allow-natives-syntax
6 6
7 var stdlib = this; 7 var stdlib = this;
8 8
9 function assertValidAsm(func) { 9 function assertValidAsm(func) {
10 assertTrue(%IsAsmWasmCode(func)); 10 assertTrue(%IsAsmWasmCode(func));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 function Float64Test() { 71 function Float64Test() {
72 "use asm"; 72 "use asm";
73 function sum(a, b) { 73 function sum(a, b) {
74 a = +a; 74 a = +a;
75 b = +b; 75 b = +b;
76 return +(a + b); 76 return +(a + b);
77 } 77 }
78 78
79 function caller() { 79 function caller() {
80 var a = 0.0; 80 var a = 0.0;
81 var ret = 0|0; 81 var ret = 0;
82 a = +sum(70.1,10.2); 82 a = +sum(70.1,10.2);
83 if (a == 80.3) { 83 if (a == 80.3) {
84 ret = 1|0; 84 ret = 1|0;
85 } else { 85 } else {
86 ret = 0|0; 86 ret = 0|0;
87 } 87 }
88 return ret|0; 88 return ret|0;
89 } 89 }
90 90
91 return {caller: caller}; 91 return {caller: caller};
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 409
410 assertWasm(20, TestContinueInNamedWhile); 410 assertWasm(20, TestContinueInNamedWhile);
411 411
412 412
413 function TestContinueInDoWhileFalse() { 413 function TestContinueInDoWhileFalse() {
414 "use asm"; 414 "use asm";
415 415
416 function caller() { 416 function caller() {
417 do { 417 do {
418 continue; 418 continue;
419 } while (false); 419 } while (0);
420 return 47; 420 return 47;
421 } 421 }
422 422
423 return {caller: caller}; 423 return {caller: caller};
424 } 424 }
425 425
426 assertWasm(47, TestContinueInDoWhileFalse); 426 assertWasm(47, TestContinueInDoWhileFalse);
427 427
428 428
429 function TestNot() { 429 function TestNot() {
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 } 882 }
883 883
884 assertWasm(41, TestConditional); 884 assertWasm(41, TestConditional);
885 885
886 886
887 function TestInitFunctionWithNoGlobals() { 887 function TestInitFunctionWithNoGlobals() {
888 "use asm"; 888 "use asm";
889 function caller() { 889 function caller() {
890 return 51; 890 return 51;
891 } 891 }
892 return {caller}; 892 return {caller:caller};
893 } 893 }
894 894
895 assertWasm(51, TestInitFunctionWithNoGlobals); 895 assertWasm(51, TestInitFunctionWithNoGlobals);
896 896
897 897
898 (function () { 898 (function () {
899 function TestExportNameDifferentFromFunctionName() { 899 function TestExportNameDifferentFromFunctionName() {
900 "use asm"; 900 "use asm";
901 function caller() { 901 function caller() {
902 return 55; 902 return 55;
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 var module_decl = eval('(' + AsmModule.toString() + ')'); 1094 var module_decl = eval('(' + AsmModule.toString() + ')');
1095 var module = module_decl(stdlib, foreign, null); 1095 var module = module_decl(stdlib, foreign, null);
1096 assertValidAsm(module_decl); 1096 assertValidAsm(module_decl);
1097 1097
1098 assertEquals(89, module.caller(83, 83.25)); 1098 assertEquals(89, module.caller(83, 83.25));
1099 } 1099 }
1100 1100
1101 print("TestForeignFunctionMultipleUse..."); 1101 print("TestForeignFunctionMultipleUse...");
1102 TestForeignFunctionMultipleUse(); 1102 TestForeignFunctionMultipleUse();
1103 1103
1104
1105 function TestForeignVariables() { 1104 function TestForeignVariables() {
1106 function AsmModule(stdlib, foreign, buffer) { 1105 function AsmModule(stdlib, foreign, buffer) {
1107 "use asm"; 1106 "use asm";
1108 1107
1109 var i1 = foreign.foo | 0; 1108 var i1 = foreign.foo | 0;
1110 var f1 = +foreign.bar; 1109 var f1 = +foreign.bar;
1111 var i2 = foreign.baz | 0; 1110 var i2 = foreign.baz | 0;
1112 var f2 = +foreign.baz; 1111 var f2 = +foreign.baz;
1113 1112
1114 function geti1() { 1113 function geti1() {
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 } 1466 }
1468 return {caller: func}; 1467 return {caller: func};
1469 } 1468 }
1470 1469
1471 assertWasm(3, TestAndNegative); 1470 assertWasm(3, TestAndNegative);
1472 1471
1473 1472
1474 function TestNegativeDouble() { 1473 function TestNegativeDouble() {
1475 "use asm"; 1474 "use asm";
1476 function func() { 1475 function func() {
1477 var x = -(34359738368.25); 1476 var x = -34359738368.25;
1478 var y = -2.5; 1477 var y = -2.5;
1479 return +(x + y); 1478 return +(x + y);
1480 } 1479 }
1481 return {caller: func}; 1480 return {caller: func};
1482 } 1481 }
1483 1482
1484 assertWasm(-34359738370.75, TestNegativeDouble); 1483 assertWasm(-34359738370.75, TestNegativeDouble);
1485 1484
1486 1485
1487 (function TestBadAndDouble() { 1486 (function TestBadAndDouble() {
(...skipping 18 matching lines...) Expand all
1506 function func() { 1505 function func() {
1507 } 1506 }
1508 return {123: func}; 1507 return {123: func};
1509 } 1508 }
1510 1509
1511 Module(stdlib); 1510 Module(stdlib);
1512 assertFalse(%IsAsmWasmCode(Module)); 1511 assertFalse(%IsAsmWasmCode(Module));
1513 })(); 1512 })();
1514 1513
1515 1514
1515 /*
1516 // TODO(bradnelson): Technically invalid, but useful to cover unicode, revises
1517 // and re-enable.
1516 (function TestUnicodeExportKey() { 1518 (function TestUnicodeExportKey() {
1517 function Module() { 1519 function Module() {
1518 "use asm"; 1520 "use asm";
1519 function func() { 1521 function func() {
1520 return 42; 1522 return 42;
1521 } 1523 }
1522 return {"\u00d1\u00e6": func}; 1524 return {"\u00d1\u00e6": func};
1523 } 1525 }
1524 1526
1525 var m = Module(stdlib); 1527 var m = Module(stdlib);
1526 assertEquals(42, m.Ñæ()); 1528 assertEquals(42, m.Ñæ());
1527 assertValidAsm(Module); 1529 assertValidAsm(Module);
1528 })(); 1530 })();
1531 */
1529 1532
1530 1533
1531 function TestAndIntAndHeapValue(stdlib, foreign, buffer) { 1534 function TestAndIntAndHeapValue(stdlib, foreign, buffer) {
1532 "use asm"; 1535 "use asm";
1533 var HEAP32 = new stdlib.Int32Array(buffer); 1536 var HEAP32 = new stdlib.Int32Array(buffer);
1534 function func() { 1537 function func() {
1535 var x = 0; 1538 var x = 0;
1536 x = HEAP32[0] & -1; 1539 x = HEAP32[0] & -1;
1537 return x | 0; 1540 return x | 0;
1538 } 1541 }
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
1752 "use asm"; 1755 "use asm";
1753 function foo() { 1756 function foo() {
1754 return 42; 1757 return 42;
1755 } 1758 }
1756 return {bar: foo, baz: foo}; 1759 return {bar: foo, baz: foo};
1757 } 1760 }
1758 var m = asmModule(); 1761 var m = asmModule();
1759 assertEquals(42, m.bar()); 1762 assertEquals(42, m.bar());
1760 assertEquals(42, m.baz()); 1763 assertEquals(42, m.baz());
1761 })(); 1764 })();
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/wasm/asm-wasm-literals.js » ('j') | test/mjsunit/wasm/asm-wasm-literals.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698