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 --allow-natives-syntax | 5 // Flags: --expose-wasm --allow-natives-syntax |
6 | 6 |
7 if ((typeof drainJobQueue) != "function") { | 7 if ((typeof drainJobQueue) != "function") { |
8 drainJobQueue = () => { %RunMicrotasks() }; | 8 drainJobQueue = () => { %RunMicrotasks() }; |
9 } | 9 } |
10 | 10 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 assertEq(Object.getPrototypeOf(moduleProto), Object.prototype); | 146 assertEq(Object.getPrototypeOf(moduleProto), Object.prototype); |
147 | 147 |
148 // 'WebAssembly.Module' instance objects | 148 // 'WebAssembly.Module' instance objects |
149 let emptyModule = new Module(emptyModuleBinary); | 149 let emptyModule = new Module(emptyModuleBinary); |
150 let importingModule = new Module(importingModuleBinary); | 150 let importingModule = new Module(importingModuleBinary); |
151 let exportingModule = new Module(exportingModuleBinary); | 151 let exportingModule = new Module(exportingModuleBinary); |
152 assertEq(typeof emptyModule, "object"); | 152 assertEq(typeof emptyModule, "object"); |
153 //TODO assertEq(String(emptyModule), "[object WebAssembly.Module]"); | 153 //TODO assertEq(String(emptyModule), "[object WebAssembly.Module]"); |
154 assertEq(Object.getPrototypeOf(emptyModule), moduleProto); | 154 assertEq(Object.getPrototypeOf(emptyModule), moduleProto); |
155 | 155 |
156 if (false) { // TODO: Module.imports support | |
157 // 'WebAssembly.Module.imports' data property | 156 // 'WebAssembly.Module.imports' data property |
158 let moduleImportsDesc = Object.getOwnPropertyDescriptor(Module, 'imports'); | 157 let moduleImportsDesc = Object.getOwnPropertyDescriptor(Module, 'imports'); |
159 assertEq(typeof moduleImportsDesc.value, "function"); | 158 assertEq(typeof moduleImportsDesc.value, "function"); |
160 assertEq(moduleImportsDesc.writable, true); | 159 assertEq(moduleImportsDesc.writable, true); |
161 assertEq(moduleImportsDesc.enumerable, false); | 160 assertEq(moduleImportsDesc.enumerable, false); |
162 assertEq(moduleImportsDesc.configurable, true); | 161 assertEq(moduleImportsDesc.configurable, true); |
163 | 162 |
164 // 'WebAssembly.Module.imports' method | 163 // 'WebAssembly.Module.imports' method |
165 let moduleImports = moduleImportsDesc.value; | 164 let moduleImports = moduleImportsDesc.value; |
166 assertEq(moduleImports.length, 1); | 165 assertEq(moduleImports.length, 1); |
167 assertErrorMessage(() => moduleImports(), TypeError, /requires more than 0 argum
ents/); | 166 assertErrorMessage(() => moduleImports(), TypeError, /requires more than 0 argum
ents/); |
168 assertErrorMessage(() => moduleImports(undefined), TypeError, /first argument mu
st be a WebAssembly.Module/); | 167 assertErrorMessage(() => moduleImports(undefined), TypeError, /first argument mu
st be a WebAssembly.Module/); |
169 assertErrorMessage(() => moduleImports({}), TypeError, /first argument must be a
WebAssembly.Module/); | 168 assertErrorMessage(() => moduleImports({}), TypeError, /first argument must be a
WebAssembly.Module/); |
170 var arr = moduleImports(new Module(wasmTextToBinary('(module)'))); | 169 var arr = moduleImports(new Module(emptyModuleBinary)); |
171 assertEq(arr instanceof Array, true); | 170 assertEq(arr instanceof Array, true); |
172 assertEq(arr.length, 0); | 171 assertEq(arr.length, 0); |
173 var arr = moduleImports(new Module(wasmTextToBinary('(module (func (import "a" "
b")) (memory (import "c" "d") 1) (table (import "e" "f") 1 anyfunc) (global (imp
ort "g" "⚡") i32))'))); | 172 let importingModuleBinary2 = (() => { |
| 173 var text = '(module (func (import "a" "b")) (memory (import "c" "d") 1) (table
(import "e" "f") 1 anyfunc) (global (import "g" "⚡") i32))' |
| 174 let builder = new WasmModuleBuilder(); |
| 175 builder.addImport("a", "b", kSig_i_i); |
| 176 builder.addImportedMemory("c", "d"); |
| 177 builder.addImportedTable("e", "f"); |
| 178 builder.addImportedGlobal("g", "x", kWasmI32); |
| 179 return new Int8Array(builder.toBuffer()); |
| 180 })(); |
| 181 var arr = moduleImports(new Module(importingModuleBinary2)); |
174 assertEq(arr instanceof Array, true); | 182 assertEq(arr instanceof Array, true); |
175 assertEq(arr.length, 4); | 183 assertEq(arr.length, 4); |
176 assertEq(arr[0].kind, "function"); | 184 assertEq(arr[0].kind, "function"); |
177 assertEq(arr[0].module, "a"); | 185 assertEq(arr[0].module, "a"); |
178 assertEq(arr[0].name, "b"); | 186 assertEq(arr[0].name, "b"); |
179 assertEq(arr[1].kind, "memory"); | 187 assertEq(arr[1].kind, "memory"); |
180 assertEq(arr[1].module, "c"); | 188 assertEq(arr[1].module, "c"); |
181 assertEq(arr[1].name, "d"); | 189 assertEq(arr[1].name, "d"); |
182 assertEq(arr[2].kind, "table"); | 190 assertEq(arr[2].kind, "table"); |
183 assertEq(arr[2].module, "e"); | 191 assertEq(arr[2].module, "e"); |
184 assertEq(arr[2].name, "f"); | 192 assertEq(arr[2].name, "f"); |
185 assertEq(arr[3].kind, "global"); | 193 assertEq(arr[3].kind, "global"); |
186 assertEq(arr[3].module, "g"); | 194 assertEq(arr[3].module, "g"); |
187 assertEq(arr[3].name, "⚡"); | 195 assertEq(arr[3].name, "x"); |
188 } | |
189 | 196 |
190 if (false) { // TODO: Module.exports property | 197 if (false) { // TODO: Module.exports property |
191 // 'WebAssembly.Module.exports' data property | 198 // 'WebAssembly.Module.exports' data property |
192 let moduleExportsDesc = Object.getOwnPropertyDescriptor(Module, 'exports'); | 199 let moduleExportsDesc = Object.getOwnPropertyDescriptor(Module, 'exports'); |
193 assertEq(typeof moduleExportsDesc.value, "function"); | 200 assertEq(typeof moduleExportsDesc.value, "function"); |
194 assertEq(moduleExportsDesc.writable, true); | 201 assertEq(moduleExportsDesc.writable, true); |
195 assertEq(moduleExportsDesc.enumerable, false); | 202 assertEq(moduleExportsDesc.enumerable, false); |
196 assertEq(moduleExportsDesc.configurable, true); | 203 assertEq(moduleExportsDesc.configurable, true); |
197 | 204 |
198 // 'WebAssembly.Module.exports' method | 205 // 'WebAssembly.Module.exports' method |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 assertEq(result.instance instanceof Instance, true); | 584 assertEq(result.instance instanceof Instance, true); |
578 } | 585 } |
579 } | 586 } |
580 assertInstantiateSuccess(emptyModule); | 587 assertInstantiateSuccess(emptyModule); |
581 assertInstantiateSuccess(emptyModuleBinary); | 588 assertInstantiateSuccess(emptyModuleBinary); |
582 assertInstantiateSuccess(emptyModuleBinary.buffer); | 589 assertInstantiateSuccess(emptyModuleBinary.buffer); |
583 assertInstantiateSuccess(importingModule, {"":{f:()=>{}}}); | 590 assertInstantiateSuccess(importingModule, {"":{f:()=>{}}}); |
584 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); | 591 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); |
585 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); | 592 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); |
586 } | 593 } |
OLD | NEW |