PR-URL: https://github.com/nodejs/node/pull/58070 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
81 lines
3.3 KiB
JavaScript
81 lines
3.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.
|
|
|
|
// Flags: --wasm-staging --no-wasm-lazy-compilation
|
|
// Flags: --no-wasm-loop-peeling --no-wasm-loop-unrolling
|
|
|
|
d8.file.execute('test/mjsunit/wasm/wasm-module-builder.js');
|
|
|
|
const builder = new WasmModuleBuilder();
|
|
let $sig0 = builder.addType(kSig_v_v);
|
|
builder.startRecGroup();
|
|
let $array1 = builder.addArray(wasmRefType(6), true, kNoSuperType, true);
|
|
let $array2 = builder.addArray(wasmRefNullType(9), false, kNoSuperType, false);
|
|
let $sig3 = builder.addType(makeSig([], [kWasmF64]));
|
|
let $struct4 = builder.addStruct([makeField(kWasmI64, false), makeField(kWasmI8, true)], kNoSuperType, true);
|
|
let $sig5 = builder.addType(makeSig([wasmRefType(9)], [wasmRefType($array2)]), kNoSuperType, false);
|
|
let $sig6 = builder.addType(kSig_i_v, kNoSuperType, false);
|
|
let $struct7 = builder.addStruct([makeField(kWasmF64, true), makeField(kWasmEqRef, false), makeField(wasmRefType($sig6), false), makeField(kWasmI8, false)], kNoSuperType, false);
|
|
let $sig8 = builder.addType(makeSig([wasmRefType(9)], [kWasmF32]));
|
|
let $sig10 = builder.addType(makeSig([wasmRefNullType($array1), kWasmI32, wasmRefType(9)], []), kNoSuperType, false);
|
|
let $struct15 = builder.addStruct([makeField(kWasmI8, false), makeField(kWasmI16, true), makeField(kWasmI32, true), makeField(kWasmI64, true), makeField(kWasmI16, true)], kNoSuperType, false);
|
|
builder.endRecGroup();
|
|
let $sig175 = builder.addType(makeSig([kWasmStructRef, kWasmI32], [kWasmFuncRef]));
|
|
let $func322 = builder.addFunction("f322", $sig175).exportFunc();
|
|
let $mem0 = builder.addMemory(16, 17, true);
|
|
let $global14 = builder.addGlobal(kWasmI32, false, false, wasmI32Const(-2078671));
|
|
|
|
// func $func322: [kWasmStructRef, kWasmI32] -> [kWasmFuncRef]
|
|
$func322.addLocals(kWasmI32, 1)
|
|
.addLocals(wasmRefType($struct15), 1)
|
|
.addBody([
|
|
kGCPrefix, kExprStructNewDefault, $struct15,
|
|
kExprLocalSet, 3,
|
|
kExprBlock, kFuncRefCode,
|
|
kExprBlock, kWasmVoid,
|
|
kExprLoop, kWasmRefNull, kI31RefCode,
|
|
kExprGlobalGet, $global14.index,
|
|
...wasmF64Const(524287.133),
|
|
...wasmF64Const(-120),
|
|
kExprF64CopySign,
|
|
kExprF64StoreMem, 3, 22,
|
|
kExprLocalGet, 3,
|
|
kGCPrefix, kExprStructGetS, $struct15, 4,
|
|
kExprLocalTee, 2, // $var2
|
|
kExprBrIf, 1,
|
|
kExprUnreachable,
|
|
kExprEnd,
|
|
kExprDrop,
|
|
kExprEnd,
|
|
kExprLocalGet, 2, // $var2
|
|
kExprDrop,
|
|
kExprLoop, kWasmVoid,
|
|
kExprBlock, kWasmVoid,
|
|
...wasmF64Const(0),
|
|
kExprLoop, kWasmF64,
|
|
kExprBlock, kWasmF64,
|
|
...wasmI32Const(-2147483648),
|
|
kExprLocalGet, 1, // $var1
|
|
kExprLocalGet, 2, // $var2
|
|
kExprLocalTee, 1, // $var1
|
|
...wasmI64Const(-108n),
|
|
...wasmI32Const(-32767),
|
|
kGCPrefix, kExprStructNew, $struct15,
|
|
kExprI32Const, 0,
|
|
kExprIf, kWasmVoid,
|
|
kExprBr, 4,
|
|
kExprEnd,
|
|
kExprDrop,
|
|
...wasmF64Const(-144115188075855870),
|
|
kExprEnd,
|
|
kExprEnd,
|
|
kExprUnreachable,
|
|
kExprEnd,
|
|
kExprEnd,
|
|
kExprUnreachable,
|
|
kExprEnd,
|
|
]);
|
|
|
|
const instance = builder.instantiate({});
|