nodejs/deps/v8/test/mjsunit/regress/wasm/regress-346197738.js
Michaël Zasso 5edec0e39a
deps: update V8 to 13.0.245.25
PR-URL: https://github.com/nodejs/node/pull/55014
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2025-01-31 12:45:51 +01:00

43 lines
1.3 KiB
JavaScript

// Copyright 2024 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.
d8.file.execute('test/mjsunit/wasm/wasm-module-builder.js');
d8.file.execute('test/mjsunit/mjsunit.js');
let b1 = new WasmModuleBuilder();
let $a8 = b1.addArray(kWasmI8, true, kNoSuperType, true);
let a8ref = wasmRefType($a8);
b1.addFunction("make_array", makeSig([], [a8ref])).exportFunc()
.addBody([
kExprI32Const, 10, // length
kGCPrefix, kExprArrayNewDefault, $a8,
]);
let instance1 = b1.instantiate();
let array = instance1.exports.make_array();
let b2 = new WasmModuleBuilder();
let $struct0 = b2.addStruct([makeField(kWasmI32, true)]);
let struct0ref = wasmRefType($struct0);
let tag0_sig = b2.addType(makeSig([struct0ref], []));
let $tag0 = b2.addTag(tag0_sig);
let create_exn = b2.addImport("", "create_exn", kSig_v_v);
b2.addExportOfKind("tag0", kExternalTag, $tag0);
b2.addFunction("main", kSig_v_v).exportFunc().addBody([
kExprCallFunction, create_exn,
]);
let exported_tag;
let instance2 = b2.instantiate({
"": {
create_exn: () => {
assertThrows(() => new WebAssembly.Exception(exported_tag, [array]),
TypeError,
/object is not a subtype of expected type/);
},
}
});
exported_tag = instance2.exports.tag0;
instance2.exports.main();