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 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 let kReturnValue = 117; | 10 let kReturnValue = 117; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 // Deprecated experimental API. | 55 // Deprecated experimental API. |
56 CheckInstance(Wasm.instantiateModule(buffer)); | 56 CheckInstance(Wasm.instantiateModule(buffer)); |
57 | 57 |
58 // Official API | 58 // Official API |
59 let module = new WebAssembly.Module(buffer); | 59 let module = new WebAssembly.Module(buffer); |
60 CheckInstance(new WebAssembly.Instance(module)); | 60 CheckInstance(new WebAssembly.Instance(module)); |
61 | 61 |
62 let promise = WebAssembly.compile(buffer); | 62 let promise = WebAssembly.compile(buffer); |
63 promise.then(module => CheckInstance(new WebAssembly.Instance(module))); | 63 promise.then(module => CheckInstance(new WebAssembly.Instance(module))); |
64 | 64 |
| 65 // Check that validate works correctly for a module. |
| 66 assertTrue(WebAssembly.validate(buffer)); |
| 67 assertFalse(WebAssembly.validate(bytes(88, 88, 88, 88, 88, 88, 88, 88))); |
| 68 |
65 // Negative tests. | 69 // Negative tests. |
66 (function InvalidModules() { | 70 (function InvalidModules() { |
67 print("InvalidModules..."); | 71 print("InvalidModules..."); |
68 let invalid_cases = [undefined, 1, "", "a", {some:1, obj: "b"}]; | 72 let invalid_cases = [undefined, 1, "", "a", {some:1, obj: "b"}]; |
69 let len = invalid_cases.length; | 73 let len = invalid_cases.length; |
70 for (var i = 0; i < len; ++i) { | 74 for (var i = 0; i < len; ++i) { |
71 try { | 75 try { |
72 let instance = new WebAssembly.Instance(1); | 76 let instance = new WebAssembly.Instance(invalid_cases[i]); |
73 assertUnreachable("should not be able to instantiate invalid modules."); | 77 assertUnreachable("should not be able to instantiate invalid modules."); |
74 } catch (e) { | 78 } catch (e) { |
75 assertContains("Argument 0", e.toString()); | 79 assertContains("Argument 0", e.toString()); |
76 } | 80 } |
77 } | 81 } |
78 })(); | 82 })(); |
79 | 83 |
80 // Compile async an invalid blob. | 84 // Compile async an invalid blob. |
81 (function InvalidBinaryAsyncCompilation() { | 85 (function InvalidBinaryAsyncCompilation() { |
82 print("InvalidBinaryAsyncCompilation..."); | 86 print("InvalidBinaryAsyncCompilation..."); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 view_1[0] = 1; | 209 view_1[0] = 1; |
206 view_2[0] = 1000; | 210 view_2[0] = 1000; |
207 | 211 |
208 var module = new WebAssembly.Module(builder.toBuffer()); | 212 var module = new WebAssembly.Module(builder.toBuffer()); |
209 var i1 = new WebAssembly.Instance(module, null, mem_1); | 213 var i1 = new WebAssembly.Instance(module, null, mem_1); |
210 var i2 = new WebAssembly.Instance(module, null, mem_2); | 214 var i2 = new WebAssembly.Instance(module, null, mem_2); |
211 | 215 |
212 assertEquals(1, i1.exports.f()); | 216 assertEquals(1, i1.exports.f()); |
213 assertEquals(1000, i2.exports.f()); | 217 assertEquals(1000, i2.exports.f()); |
214 })(); | 218 })(); |
OLD | NEW |