node/deps/v8/test/mjsunit/wasm/stringref-memory64.js
Michaël Zasso 9d7cd9b864
deps: update V8 to 12.8.374.13
PR-URL: https://github.com/nodejs/node/pull/54077
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
2024-08-16 16:03:01 +02:00

79 lines
2.4 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: --experimental-wasm-stringref --experimental-wasm-memory64
d8.file.execute("test/mjsunit/wasm/wasm-module-builder.js");
let builder = new WasmModuleBuilder();
builder.addMemory(1, 1); // Just to block memory index 0.
let $mem1 = builder.addMemory64(1, 1);
builder.addActiveDataSegment(
1, [kExprI64Const, 0], [97, 98, 99, 0, 100, 0, 101]);
let kSig_w_li = makeSig([kWasmI64, kWasmI32], [kWasmStringRef]);
let kSig_i_wl = makeSig([kWasmStringRef, kWasmI64], [kWasmI32]);
builder.addFunction("new_wtf8", kSig_w_li).exportFunc().addBody([
kExprLocalGet, 0,
kExprLocalGet, 1,
...GCInstr(kExprStringNewUtf8), $mem1,
]);
builder.addFunction("new_wtf16", kSig_w_li).exportFunc().addBody([
kExprLocalGet, 0,
kExprLocalGet, 1,
...GCInstr(kExprStringNewWtf16), $mem1,
]);
builder.addFunction("encode_wtf8", kSig_i_wl).exportFunc().addBody([
kExprLocalGet, 0,
kExprLocalGet, 1,
...GCInstr(kExprStringEncodeWtf8), $mem1,
]);
builder.addFunction("encode_wtf8_view", kSig_i_wl).exportFunc().addBody([
kExprLocalGet, 0,
...GCInstr(kExprStringAsWtf8),
kExprLocalGet, 1,
kExprI32Const, 0, // start offset
kExprI32Const, 2, // number of bytes
...GCInstr(kExprStringViewWtf8EncodeWtf8), $mem1,
kExprReturn,
]);
builder.addFunction("encode_wtf16", kSig_i_wl).exportFunc().addBody([
kExprLocalGet, 0,
kExprLocalGet, 1,
...GCInstr(kExprStringEncodeWtf16), $mem1,
]);
builder.addFunction("encode_wtf16_view", kSig_i_wl).exportFunc().addBody([
kExprLocalGet, 0,
...GCInstr(kExprStringAsWtf16),
kExprLocalGet, 1,
kExprI32Const, 0, // start offset
kExprI32Const, 2, // number of code units
...GCInstr(kExprStringViewWtf16Encode), $mem1,
]);
let instance = builder.instantiate();
assertEquals("ab", instance.exports.new_wtf8(0n, 2));
assertEquals("cd", instance.exports.new_wtf16(2n, 2));
assertEquals(2, instance.exports.encode_wtf8("ef", 100n));
assertEquals("ef", instance.exports.new_wtf8(100n, 2));
assertEquals(2, instance.exports.encode_wtf8_view("gh", 100n));
assertEquals("gh", instance.exports.new_wtf8(100n, 2));
assertEquals(2, instance.exports.encode_wtf16("ij", 102n));
assertEquals("ij", instance.exports.new_wtf16(102n, 2));
assertEquals(2, instance.exports.encode_wtf16_view("kl", 102n));
assertEquals("kl", instance.exports.new_wtf16(102n, 2));