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 AddFunctions(builder) { | 10 function AddFunctions(builder) { |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 var sig_index2 = builder.addType(kSig_i_v); | 312 var sig_index2 = builder.addType(kSig_i_v); |
313 var f2 = builder.addFunction("f2", sig_index2) | 313 var f2 = builder.addFunction("f2", sig_index2) |
314 .addBody([kExprI32Const, 22]); | 314 .addBody([kExprI32Const, 22]); |
315 | 315 |
316 builder.addFunction("main", kSig_i_ii) | 316 builder.addFunction("main", kSig_i_ii) |
317 .addBody([ | 317 .addBody([ |
318 kExprGetLocal, 0, // -- | 318 kExprGetLocal, 0, // -- |
319 kExprCallIndirect, sig_index2, kTableZero]) // -- | 319 kExprCallIndirect, sig_index2, kTableZero]) // -- |
320 .exportAs("main"); | 320 .exportAs("main"); |
321 | 321 |
322 builder.setFunctionTableLength(kTableSize); | |
323 builder.addFunctionTableInit(1, false, [f2.index]); | |
324 builder.addImportedTable("z", "table", kTableSize, kTableSize); | 322 builder.addImportedTable("z", "table", kTableSize, kTableSize); |
| 323 builder.addFunctionTableInit(1, false, [f2.index], true); |
325 | 324 |
326 var m2 = new WebAssembly.Module(builder.toBuffer()); | 325 var m2 = new WebAssembly.Module(builder.toBuffer()); |
327 | 326 |
328 assertFalse(sig_index1 == sig_index2); | 327 assertFalse(sig_index1 == sig_index2); |
329 | 328 |
330 var i1 = new WebAssembly.Instance(m1); | 329 var i1 = new WebAssembly.Instance(m1); |
331 var i2 = new WebAssembly.Instance(m2, {z: {table: i1.exports.table}}); | 330 var i2 = new WebAssembly.Instance(m2, {z: {table: i1.exports.table}}); |
332 | 331 |
333 assertEquals(11, i1.exports.main(0)); | 332 assertEquals(11, i1.exports.main(0)); |
334 assertEquals(11, i2.exports.main(0)); | 333 assertEquals(11, i2.exports.main(0)); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 {element: "anyfunc", initial: 3, maximum: 3})}})); | 470 {element: "anyfunc", initial: 3, maximum: 3})}})); |
472 | 471 |
473 // maximum size is too large | 472 // maximum size is too large |
474 assertThrows(() => builder.instantiate({t: {t: new WebAssembly.Table( | 473 assertThrows(() => builder.instantiate({t: {t: new WebAssembly.Table( |
475 {element: "anyfunc", initial: 1, maximum: 4})}})); | 474 {element: "anyfunc", initial: 1, maximum: 4})}})); |
476 | 475 |
477 // no maximum | 476 // no maximum |
478 assertThrows(() => builder.instantiate({t: {t: new WebAssembly.Table( | 477 assertThrows(() => builder.instantiate({t: {t: new WebAssembly.Table( |
479 {element: "anyfunc", initial: 1})}})); | 478 {element: "anyfunc", initial: 1})}})); |
480 })(); | 479 })(); |
OLD | NEW |