summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/wasm/test-gc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/wasm/test-gc.cc')
-rw-r--r--deps/v8/test/cctest/wasm/test-gc.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/deps/v8/test/cctest/wasm/test-gc.cc b/deps/v8/test/cctest/wasm/test-gc.cc
index 8454e8bb35..3366fe04f2 100644
--- a/deps/v8/test/cctest/wasm/test-gc.cc
+++ b/deps/v8/test/cctest/wasm/test-gc.cc
@@ -88,6 +88,10 @@ class WasmGCTester {
byte DefineSignature(FunctionSig* sig) { return builder_.AddSignature(sig); }
+ byte DefineTable(ValueType type, uint32_t min_size, uint32_t max_size) {
+ return builder_.AddTable(type, min_size, max_size);
+ }
+
void CompileModule() {
ZoneBuffer buffer(&zone);
builder_.WriteTo(&buffer);
@@ -1048,6 +1052,21 @@ TEST(GlobalInitReferencingGlobal) {
tester.CheckResult(func, 42);
}
+TEST(IndirectNullSetManually) {
+ WasmGCTester tester;
+ byte sig_index = tester.DefineSignature(tester.sigs.i_i());
+ tester.DefineTable(ValueType::Ref(sig_index, kNullable), 1, 1);
+ byte func_index = tester.DefineFunction(
+ tester.sigs.i_i(), {},
+ {WASM_TABLE_SET(0, WASM_I32V(0), WASM_REF_NULL(sig_index)),
+ WASM_CALL_INDIRECT(sig_index, WASM_I32V(0), WASM_GET_LOCAL(0)),
+ kExprEnd});
+
+ tester.CompileModule();
+
+ tester.CheckHasThrown(func_index, 42);
+}
+
TEST(JsAccess) {
WasmGCTester tester;
const byte type_index = tester.DefineStruct({F(wasm::kWasmI32, true)});