OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 load("test/mjsunit/wasm/wasm-constants.js"); | 7 load("test/mjsunit/wasm/wasm-constants.js"); |
8 load("test/mjsunit/wasm/wasm-module-builder.js"); | 8 load("test/mjsunit/wasm/wasm-module-builder.js"); |
9 | 9 |
10 (function testExportedMain() { | 10 (function testExportedMain() { |
11 print("TestExportedMain..."); | 11 print("TestExportedMain..."); |
12 var kReturnValue = 88; | 12 var kReturnValue = 44; |
13 var builder = new WasmModuleBuilder(); | 13 var builder = new WasmModuleBuilder(); |
14 | 14 |
15 builder.addFunction("main", kSig_i_v) | 15 builder.addFunction("main", kSig_i_v) |
16 .addBody([ | 16 .addBody([ |
17 kExprI8Const, | 17 kExprI32Const, |
18 kReturnValue, | 18 kReturnValue, |
19 kExprReturn | 19 kExprReturn |
20 ]) | 20 ]) |
21 .exportFunc(); | 21 .exportFunc(); |
22 | 22 |
23 var module = builder.instantiate(); | 23 var module = builder.instantiate(); |
24 | 24 |
25 assertEquals("object", typeof module.exports); | 25 assertEquals("object", typeof module.exports); |
26 assertEquals("function", typeof module.exports.main); | 26 assertEquals("function", typeof module.exports.main); |
27 | 27 |
28 assertEquals(kReturnValue, module.exports.main()); | 28 assertEquals(kReturnValue, module.exports.main()); |
29 })(); | 29 })(); |
30 | 30 |
31 (function testExportedTwice() { | 31 (function testExportedTwice() { |
32 print("TestExportedTwice..."); | 32 print("TestExportedTwice..."); |
33 var kReturnValue = 99; | 33 var kReturnValue = 45; |
34 | 34 |
35 var builder = new WasmModuleBuilder(); | 35 var builder = new WasmModuleBuilder(); |
36 | 36 |
37 builder.addFunction("main", kSig_i_v) | 37 builder.addFunction("main", kSig_i_v) |
38 .addBody([ | 38 .addBody([ |
39 kExprI8Const, | 39 kExprI32Const, |
40 kReturnValue, | 40 kReturnValue, |
41 kExprReturn | 41 kExprReturn |
42 ]) | 42 ]) |
43 .exportAs("blah") | 43 .exportAs("blah") |
44 .exportAs("foo"); | 44 .exportAs("foo"); |
45 | 45 |
46 var module = builder.instantiate(); | 46 var module = builder.instantiate(); |
47 | 47 |
48 assertEquals("object", typeof module.exports); | 48 assertEquals("object", typeof module.exports); |
49 assertEquals("function", typeof module.exports.blah); | 49 assertEquals("function", typeof module.exports.blah); |
50 assertEquals("function", typeof module.exports.foo); | 50 assertEquals("function", typeof module.exports.foo); |
51 | 51 |
52 assertEquals(kReturnValue, module.exports.foo()); | 52 assertEquals(kReturnValue, module.exports.foo()); |
53 assertEquals(kReturnValue, module.exports.blah()); | 53 assertEquals(kReturnValue, module.exports.blah()); |
54 assertSame(module.exports.blah, module.exports.foo); | 54 assertSame(module.exports.blah, module.exports.foo); |
55 })(); | 55 })(); |
56 | 56 |
57 (function testEmptyName() { | 57 (function testEmptyName() { |
58 print("TestEmptyName..."); | 58 print("TestEmptyName..."); |
59 var kReturnValue = 93; | 59 var kReturnValue = 46; |
60 | 60 |
61 var builder = new WasmModuleBuilder(); | 61 var builder = new WasmModuleBuilder(); |
62 | 62 |
63 builder.addFunction("main", kSig_i_v) | 63 builder.addFunction("main", kSig_i_v) |
64 .addBody([ | 64 .addBody([ |
65 kExprI8Const, | 65 kExprI32Const, |
66 kReturnValue, | 66 kReturnValue, |
67 kExprReturn | 67 kExprReturn |
68 ]) | 68 ]) |
69 .exportAs(""); | 69 .exportAs(""); |
70 | 70 |
71 var module = builder.instantiate(); | 71 var module = builder.instantiate(); |
72 | 72 |
73 assertEquals("object", typeof module.exports); | 73 assertEquals("object", typeof module.exports); |
74 assertEquals("function", typeof module.exports[""]); | 74 assertEquals("function", typeof module.exports[""]); |
75 | 75 |
76 assertEquals(kReturnValue, module.exports[""]()); | 76 assertEquals(kReturnValue, module.exports[""]()); |
77 })(); | 77 })(); |
78 | 78 |
79 (function testNumericName() { | 79 (function testNumericName() { |
80 print("TestNumericName..."); | 80 print("TestNumericName..."); |
81 var kReturnValue = 93; | 81 var kReturnValue = 47; |
82 | 82 |
83 var builder = new WasmModuleBuilder(); | 83 var builder = new WasmModuleBuilder(); |
84 | 84 |
85 builder.addFunction("main", kSig_i_v) | 85 builder.addFunction("main", kSig_i_v) |
86 .addBody([ | 86 .addBody([ |
87 kExprI8Const, | 87 kExprI32Const, |
88 kReturnValue, | 88 kReturnValue, |
89 kExprReturn | 89 kExprReturn |
90 ]) | 90 ]) |
91 .exportAs("0"); | 91 .exportAs("0"); |
92 | 92 |
93 var module = builder.instantiate(); | 93 var module = builder.instantiate(); |
94 | 94 |
95 assertEquals("object", typeof module.exports); | 95 assertEquals("object", typeof module.exports); |
96 assertEquals("function", typeof module.exports["0"]); | 96 assertEquals("function", typeof module.exports["0"]); |
97 | 97 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 builder.addExport("g", b); | 167 builder.addExport("g", b); |
168 | 168 |
169 let instance = builder.instantiate({q: {a: js, b: js}}); | 169 let instance = builder.instantiate({q: {a: js, b: js}}); |
170 let e = instance.exports; | 170 let e = instance.exports; |
171 assertEquals("function", typeof e.f); | 171 assertEquals("function", typeof e.f); |
172 assertEquals("function", typeof e.g); | 172 assertEquals("function", typeof e.g); |
173 assertFalse(e.f == js); | 173 assertFalse(e.f == js); |
174 assertFalse(e.g == js); | 174 assertFalse(e.g == js); |
175 assertFalse(e.f == e.g); | 175 assertFalse(e.f == e.g); |
176 })(); | 176 })(); |
OLD | NEW |