diff options
Diffstat (limited to 'src/wasm-builder.h')
-rw-r--r-- | src/wasm-builder.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/wasm-builder.h b/src/wasm-builder.h index 213edbef5..73c8f9823 100644 --- a/src/wasm-builder.h +++ b/src/wasm-builder.h @@ -753,27 +753,36 @@ public: ret->finalize(); return ret; } - ArrayNew* makeArrayNew() { + ArrayNew* + makeArrayNew(Expression* rtt, Expression* size, Expression* init = nullptr) { auto* ret = wasm.allocator.alloc<ArrayNew>(); - WASM_UNREACHABLE("TODO (gc): array.new"); + ret->rtt = rtt; + ret->size = size; + ret->init = init; ret->finalize(); return ret; } - ArrayGet* makeArrayGet() { + ArrayGet* + makeArrayGet(Expression* ref, Expression* index, bool signed_ = false) { auto* ret = wasm.allocator.alloc<ArrayGet>(); - WASM_UNREACHABLE("TODO (gc): array.get"); + ret->ref = ref; + ret->index = index; + ret->signed_ = signed_; ret->finalize(); return ret; } - ArraySet* makeArraySet() { + ArraySet* + makeArraySet(Expression* ref, Expression* index, Expression* value) { auto* ret = wasm.allocator.alloc<ArraySet>(); - WASM_UNREACHABLE("TODO (gc): array.set"); + ret->ref = ref; + ret->index = index; + ret->value = value; ret->finalize(); return ret; } - ArrayLen* makeArrayLen() { + ArrayLen* makeArrayLen(Expression* ref) { auto* ret = wasm.allocator.alloc<ArrayLen>(); - WASM_UNREACHABLE("TODO (gc): array.len"); + ret->ref = ref; ret->finalize(); return ret; } |