| // 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-gc |
| |
| load('test/mjsunit/wasm/wasm-constants.js'); |
| load('test/mjsunit/wasm/wasm-module-builder.js'); |
| |
| builder1 = new WasmModuleBuilder(); |
| builder1.addFunction('exp1', kSig_v_v).addBody([kExprUnreachable]).exportFunc(); |
| |
| builder2 = new WasmModuleBuilder(); |
| builder2.addImport('imp', 'imp', kSig_v_v); |
| builder2.addFunction('call_imp', kSig_v_v) |
| .addBody([kExprCallFunction, 0]) |
| .exportFunc(); |
| |
| export1 = builder1.instantiate().exports.exp1; |
| export2 = builder2.instantiate({imp: {imp: export1}}).exports.call_imp; |
| export1 = undefined; |
| |
| let a = [0]; |
| for (i = 0; i < 10; ++i) { |
| a = a.concat(new Array(i).fill(i)); |
| assertThrows(() => export2(), WebAssembly.RuntimeError); |
| gc(); |
| } |