summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/serialize-lazy-module.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/serialize-lazy-module.js')
-rw-r--r--deps/v8/test/mjsunit/wasm/serialize-lazy-module.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/wasm/serialize-lazy-module.js b/deps/v8/test/mjsunit/wasm/serialize-lazy-module.js
new file mode 100644
index 0000000000..98998c6f43
--- /dev/null
+++ b/deps/v8/test/mjsunit/wasm/serialize-lazy-module.js
@@ -0,0 +1,68 @@
+// Copyright 2018 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: --wasm-lazy-compilation --allow-natives-syntax --expose-gc
+
+load('test/mjsunit/wasm/wasm-constants.js');
+load('test/mjsunit/wasm/wasm-module-builder.js');
+
+(function SerializeUncompiledModule() {
+ print(arguments.callee.name);
+ const [wire_bytes, i1, buff] = (function GenerateInstance() {
+ const builder = new WasmModuleBuilder();
+
+ // Add 20 functions.
+ for (let i = 0; i < 20; ++i) {
+ builder.addFunction('f' + i, kSig_i_i)
+ .addBody([kExprI32Const, i])
+ .exportFunc();
+ }
+
+ const wire_bytes = builder.toBuffer();
+ const module = new WebAssembly.Module(wire_bytes);
+ const buff = %SerializeWasmModule(module);
+ return [wire_bytes, new WebAssembly.Instance(module), buff];
+ })();
+
+ gc();
+ const module = %DeserializeWasmModule(buff, wire_bytes);
+
+ const i2 = new WebAssembly.Instance(module);
+
+ assertEquals(13, i2.exports.f13());
+ assertEquals(11, i1.exports.f11());
+})();
+
+(function SerializePartlyCompiledModule() {
+ print(arguments.callee.name);
+ const [wire_bytes, i1, buff] = (function GenerateInstance() {
+ const builder = new WasmModuleBuilder();
+
+ // Add 20 functions.
+ for (let i = 0; i < 20; ++i) {
+ builder.addFunction('f' + i, kSig_i_i)
+ .addBody([kExprI32Const, i])
+ .exportFunc();
+ }
+
+ const wire_bytes = builder.toBuffer();
+ const module = new WebAssembly.Module(wire_bytes);
+ const buff = %SerializeWasmModule(module);
+ const i1 = new WebAssembly.Instance(module);
+
+ assertEquals(2, i1.exports.f2());
+ assertEquals(11, i1.exports.f11());
+
+ return [wire_bytes, i1, buff];
+ })();
+
+ gc();
+ const module = %DeserializeWasmModule(buff, wire_bytes);
+
+ const i2 = new WebAssembly.Instance(module);
+
+ assertEquals(13, i2.exports.f13());
+ assertEquals(11, i1.exports.f11());
+ assertEquals(9, i1.exports.f9());
+})();