diff options
author | Alon Zakai <azakai@google.com> | 2020-12-07 16:58:43 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-07 16:58:43 -0800 |
commit | a84898c11df3d93fb69365fb274a9bb06d60ed47 (patch) | |
tree | c2bc444354ec5731dccb090e5437f00840bf7d9a /src/ir/effects.h | |
parent | 72a7881b42ebed6b2ef36e912a8f5937106e5824 (diff) | |
download | binaryen-a84898c11df3d93fb69365fb274a9bb06d60ed47.tar.gz binaryen-a84898c11df3d93fb69365fb274a9bb06d60ed47.tar.bz2 binaryen-a84898c11df3d93fb69365fb274a9bb06d60ed47.zip |
[GC] Add struct.set (#3430)
Mostly straightforward after struct.get.
This renames the value field in struct.get to ref. I think this makes
more sense because struct.set has both a reference to a thing, and a
value to set onto that thing. So calling the former ref seems more
consistent, giving us ref, value. This mirrors load/store for example
where we use ptr, value, and ref is playing the role of ptr here
basically.
Diffstat (limited to 'src/ir/effects.h')
-rw-r--r-- | src/ir/effects.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ir/effects.h b/src/ir/effects.h index 80aa74cb6..d5b917d8b 100644 --- a/src/ir/effects.h +++ b/src/ir/effects.h @@ -563,12 +563,15 @@ private: } void visitStructGet(StructGet* curr) { // traps when the arg is null - if (curr->value->type.isNullable()) { + if (curr->ref->type.isNullable()) { parent.implicitTrap = true; } } void visitStructSet(StructSet* curr) { - WASM_UNREACHABLE("TODO (gc): struct.set"); + // traps when the arg is null + if (curr->ref->type.isNullable()) { + parent.implicitTrap = true; + } } void visitArrayNew(ArrayNew* curr) { WASM_UNREACHABLE("TODO (gc): array.new"); |