summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/user-properties-module.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/user-properties-module.js')
-rw-r--r--deps/v8/test/mjsunit/wasm/user-properties-module.js54
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;
+ }
+ }
+})();