static bool RenderStore(WasmRenderContext& c, AstStore& store) { uint32_t defaultAlignLog2; switch (store.expr()) { case Expr::I32Store8: if (!c.buffer.append("(i32.store8")) return false; defaultAlignLog2 = 0; break; case Expr::I64Store8: if (!c.buffer.append("(i64.store8")) return false; defaultAlignLog2 = 0; break; case Expr::I32Store16: if (!c.buffer.append("(i32.store16")) return false; defaultAlignLog2 = 1; break; case Expr::I64Store16: if (!c.buffer.append("(i64.store16")) return false; defaultAlignLog2 = 1; break; case Expr::I64Store32: if (!c.buffer.append("(i64.store32")) return false; defaultAlignLog2 = 2; break; case Expr::I32Store: if (!c.buffer.append("(i32.store")) return false; defaultAlignLog2 = 2; break; case Expr::I64Store: if (!c.buffer.append("(i64.store")) return false; defaultAlignLog2 = 3; break; case Expr::F32Store: if (!c.buffer.append("(f32.store")) return false; defaultAlignLog2 = 2; break; case Expr::F64Store: if (!c.buffer.append("(f64.store")) return false; defaultAlignLog2 = 3; break; default: return false; } if (!RenderLoadStoreAddress(c, store.address(), defaultAlignLog2)) return false; if (!c.buffer.append(" ")) return false; if (!RenderExpr(c, store.value())) return false; return c.buffer.append(")"); }
static bool RenderStore(WasmRenderContext& c, AstStore& store) { if (!RenderLoadStoreBase(c, store.address())) return false; if (!RenderExpr(c, store.value())) return false; if (!RenderIndent(c)) return false; MAP_AST_EXPR(c, store); uint32_t defaultAlignLog2; switch (store.op()) { case Op::I32Store8: if (!c.buffer.append("i32.store8")) return false; defaultAlignLog2 = 0; break; case Op::I64Store8: if (!c.buffer.append("i64.store8")) return false; defaultAlignLog2 = 0; break; case Op::I32Store16: if (!c.buffer.append("i32.store16")) return false; defaultAlignLog2 = 1; break; case Op::I64Store16: if (!c.buffer.append("i64.store16")) return false; defaultAlignLog2 = 1; break; case Op::I64Store32: if (!c.buffer.append("i64.store32")) return false; defaultAlignLog2 = 2; break; case Op::I32Store: if (!c.buffer.append("i32.store")) return false; defaultAlignLog2 = 2; break; case Op::I64Store: if (!c.buffer.append("i64.store")) return false; defaultAlignLog2 = 3; break; case Op::F32Store: if (!c.buffer.append("f32.store")) return false; defaultAlignLog2 = 2; break; case Op::F64Store: if (!c.buffer.append("f64.store")) return false; defaultAlignLog2 = 3; break; default: return Fail(c, "unexpected store operator"); } return RenderLoadStoreAddress(c, store.address(), defaultAlignLog2); }