nodejs/deps/v8/test/mjsunit/regress/wasm/regress-336214779.js

42 lines
1.2 KiB
JavaScript
Raw Permalink Normal View History

// 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.
//
// Flags: --allow-natives-syntax --jit-fuzzing --wasm-staging
// Flags: --expose-gc
d8.file.execute("test/mjsunit/wasm/wasm-module-builder.js");
d8.file.execute("test/mjsunit/wasm/exceptions-utils.js");
(function Regress336214779() {
print(arguments.callee.name);
let builder = new WasmModuleBuilder();
let tag_index = builder.addImportedTag("", "tag", kSig_v_r);
function throw_ref(x) {
%ScheduleGCInStackCheck();
throw x;
}
let kJSThrowRef = builder.addImport("", "throw_ref", kSig_r_r);
let try_sig_index = builder.addType(kSig_r_v);
builder.addFunction("test", kSig_r_r)
.addBody([
kExprTryTable, try_sig_index, 1,
kCatchNoRef, tag_index, 0,
kExprLocalGet, 0,
kExprCallFunction, kJSThrowRef,
kExprEnd,
])
.exportFunc();
let tag = new WebAssembly.Tag({parameters: ['externref'], results: []});
let instance = builder.instantiate({"": {
throw_ref: throw_ref,
tag: tag,
}});
let obj = new WebAssembly.Exception(tag, [{}]);
instance.exports.test(obj);
instance.exports.test(obj);
})();