diff options
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/user-properties-module.js')
-rw-r--r-- | deps/v8/test/mjsunit/wasm/user-properties-module.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/wasm/user-properties-module.js b/deps/v8/test/mjsunit/wasm/user-properties-module.js new file mode 100644 index 0000000000..69a1f898d7 --- /dev/null +++ b/deps/v8/test/mjsunit/wasm/user-properties-module.js @@ -0,0 +1,54 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --expose-wasm --expose-gc --verify-heap + +load("test/mjsunit/wasm/user-properties-common.js"); + +(function ModuleTest() { + for (f of [x => (x + 19 + globalCounter), minus18]) { + print("ModuleTest"); + + let builder = new WasmModuleBuilder(); + builder.addImport("m", "f", kSig_i_i); + builder.addFunction("main", kSig_i_i) + .addBody([ + kExprGetLocal, 0, + kExprCallFunction, 0]) + .exportAs("main"); + builder.addMemory(1, 1, false) + .exportMemoryAs("memory") + + let module = builder.toModule(); + testProperties(module); + + for (let i = 0; i < 3; i++) { + print(" instance " + i); + let instance = new WebAssembly.Instance(module, {m: {f: f}}); + testProperties(instance); + + print(" memory " + i); + let m = instance.exports.memory; + assertInstanceof(m, WebAssembly.Memory); + testProperties(m); + + print(" function " + i); + let g = instance.exports.main; + assertInstanceof(g, Function); + printName("before", g); + testProperties(g); + printName(" after", g); + assertInstanceof(g, Function); + testProperties(g); + for (let j = 10; j < 15; j++) { + assertEquals(f(j), g(j)); + } + verifyHeap(); + // The WASM-internal fields of {g} are only inspected when {g} is + // used as an import into another instance. Use {g} as the import + // the next time through the loop. + f = g; + } + } +})(); |