Chromium Code Reviews| Index: test/mjsunit/wasm/compiled-module-management.js |
| diff --git a/test/mjsunit/wasm/compiled-module-management.js b/test/mjsunit/wasm/compiled-module-management.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fbeb15684aee38b21417e7e5909b9383a8bf59d8 |
| --- /dev/null |
| +++ b/test/mjsunit/wasm/compiled-module-management.js |
| @@ -0,0 +1,48 @@ |
| +// Copyright 2016 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: --no-ignition --no-ignition-staging --expose-wasm --expose-gc --allow-natives-syntax |
|
bradnelson
2016/09/02 16:57:00
You can split these into two Flags: to stay under
Mircea Trofin
2016/09/02 20:55:30
Done.
|
| + |
| +load("test/mjsunit/wasm/wasm-constants.js"); |
| +load("test/mjsunit/wasm/wasm-module-builder.js"); |
| + |
| + |
| +(function CompiledModuleInstancesAreGCed() { |
| + var builder = new WasmModuleBuilder(); |
| + |
| + builder.addMemory(1,1, true); |
| + builder.addImport("getValue", kSig_i); |
| + builder.addFunction("f", kSig_i) |
| + .addBody([ |
| + kExprCallImport, kArity0, 0 |
| + ]).exportFunc(); |
| + |
| + var module = new WebAssembly.Module(builder.toBuffer()); |
| + %ValidateWasmModuleState(module); |
| + %ValidateWasmInstancesChain(module, 0); |
| + var i1 = new WebAssembly.Instance(module, {getValue: () => 1}); |
| + %ValidateWasmInstancesChain(module, 1); |
| + var i2 = new WebAssembly.Instance(module, {getValue: () => 2}); |
| + %ValidateWasmInstancesChain(module, 2); |
| + var i3 = new WebAssembly.Instance(module, {getValue: () => 3}); |
| + %ValidateWasmInstancesChain(module, 3); |
| + |
| + assertEquals(1, i1.exports.f()); |
| + i1 = null; |
| + gc(); |
| + %ValidateWasmInstancesChain(module, 2); |
| + assertEquals(3, i3.exports.f()); |
| + i3 = null; |
| + gc(); |
| + %ValidateWasmInstancesChain(module, 1); |
| + assertEquals(2, i2.exports.f()); |
| + i2 = null; |
| + gc(); |
| + %ValidateWasmModuleState(module); |
| + var i4 = new WebAssembly.Instance(module, {getValue: () => 4}); |
| + assertEquals(4, i4.exports.f()); |
| + module = null; |
| + gc(); |
| + %ValidateWasmOrphanedInstance(i4); |
| +})(); |