summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-ir-builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-ir-builder.cpp')
-rw-r--r--src/wasm/wasm-ir-builder.cpp42
1 files changed, 38 insertions, 4 deletions
diff --git a/src/wasm/wasm-ir-builder.cpp b/src/wasm/wasm-ir-builder.cpp
index be2bb4404..a95329f7d 100644
--- a/src/wasm/wasm-ir-builder.cpp
+++ b/src/wasm/wasm-ir-builder.cpp
@@ -1159,13 +1159,47 @@ Result<> IRBuilder::makeRefEq() {
return Ok{};
}
-// Result<> IRBuilder::makeTableGet() {}
+Result<> IRBuilder::makeTableGet(Name table) {
+ TableGet curr;
+ CHECK_ERR(visitTableGet(&curr));
+ auto type = wasm.getTable(table)->type;
+ push(builder.makeTableGet(table, curr.index, type));
+ return Ok{};
+}
+
+Result<> IRBuilder::makeTableSet(Name table) {
+ TableSet curr;
+ CHECK_ERR(visitTableSet(&curr));
+ push(builder.makeTableSet(table, curr.index, curr.value));
+ return Ok{};
+}
+
+Result<> IRBuilder::makeTableSize(Name table) {
+ push(builder.makeTableSize(table));
+ return Ok{};
+}
-// Result<> IRBuilder::makeTableSet() {}
+Result<> IRBuilder::makeTableGrow(Name table) {
+ TableGrow curr;
+ CHECK_ERR(visitTableGrow(&curr));
+ push(builder.makeTableGrow(table, curr.value, curr.delta));
+ return Ok{};
+}
-// Result<> IRBuilder::makeTableSize() {}
+Result<> IRBuilder::makeTableFill(Name table) {
+ TableFill curr;
+ CHECK_ERR(visitTableFill(&curr));
+ push(builder.makeTableFill(table, curr.dest, curr.value, curr.size));
+ return Ok{};
+}
-// Result<> IRBuilder::makeTableGrow() {}
+Result<> IRBuilder::makeTableCopy(Name destTable, Name srcTable) {
+ TableCopy curr;
+ CHECK_ERR(visitTableCopy(&curr));
+ push(builder.makeTableCopy(
+ curr.dest, curr.source, curr.size, destTable, srcTable));
+ return Ok{};
+}
Result<> IRBuilder::makeTry(Name label, Type type) {
auto* tryy = wasm.allocator.alloc<Try>();