diff options
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/compiled-module-management.js')
-rw-r--r-- | deps/v8/test/mjsunit/wasm/compiled-module-management.js | 71 |
1 files changed, 46 insertions, 25 deletions
diff --git a/deps/v8/test/mjsunit/wasm/compiled-module-management.js b/deps/v8/test/mjsunit/wasm/compiled-module-management.js index a1bd2ce3c8..8c4c3b32af 100644 --- a/deps/v8/test/mjsunit/wasm/compiled-module-management.js +++ b/deps/v8/test/mjsunit/wasm/compiled-module-management.js @@ -2,49 +2,70 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// TODO (mtrofin): re-enable ignition (v8:5345) -// Flags: --no-ignition --no-ignition-staging // Flags: --expose-wasm --expose-gc --allow-natives-syntax load("test/mjsunit/wasm/wasm-constants.js"); load("test/mjsunit/wasm/wasm-module-builder.js"); +// Use global variables for all values where the test wants to maintain strict +// control over value lifetime. Using local variables would not give sufficient +// guarantees of the value lifetime. +var module; +var instance1; +var instance2; +var instance3; +var instance4; -(function CompiledModuleInstancesAreGCed() { +(function CompiledModuleInstancesInitialize1to3() { var builder = new WasmModuleBuilder(); builder.addMemory(1,1, true); - builder.addImport("getValue", kSig_i); - builder.addFunction("f", kSig_i) + builder.addImport("getValue", kSig_i_v); + builder.addFunction("f", kSig_i_v) .addBody([ kExprCallFunction, 0 ]).exportFunc(); - var module = new WebAssembly.Module(builder.toBuffer()); + module = new WebAssembly.Module(builder.toBuffer()); %ValidateWasmModuleState(module); %ValidateWasmInstancesChain(module, 0); - var i1 = new WebAssembly.Instance(module, {getValue: () => 1}); + instance1 = new WebAssembly.Instance(module, {getValue: () => 1}); %ValidateWasmInstancesChain(module, 1); - var i2 = new WebAssembly.Instance(module, {getValue: () => 2}); + instance2 = new WebAssembly.Instance(module, {getValue: () => 2}); %ValidateWasmInstancesChain(module, 2); - var i3 = new WebAssembly.Instance(module, {getValue: () => 3}); + instance3 = 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()); +(function CompiledModuleInstancesClear1() { + assertEquals(1, instance1.exports.f()); + instance1 = null; +})(); + +gc(); +%ValidateWasmInstancesChain(module, 2); + +(function CompiledModuleInstancesClear3() { + assertEquals(3, instance3.exports.f()); + instance3 = null; +})(); + +gc(); +%ValidateWasmInstancesChain(module, 1); + +(function CompiledModuleInstancesClear2() { + assertEquals(2, instance2.exports.f()); + instance2 = null; +})(); + +gc(); +%ValidateWasmModuleState(module); + +(function CompiledModuleInstancesInitialize4AndClearModule() { + instance4 = new WebAssembly.Instance(module, {getValue: () => 4}); + assertEquals(4, instance4.exports.f()); module = null; - gc(); - %ValidateWasmOrphanedInstance(i4); })(); + +gc(); +%ValidateWasmOrphanedInstance(instance4); |