From fef7e3cd1342f679a0d149ac77f393c6a20ad46f Mon Sep 17 00:00:00 2001 From: bainchild Date: Tue, 3 Jan 2023 01:06:25 -0600 Subject: [PATCH] Missed a file --- codegen/luau/src/backend/statement.rs | 32 +++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/codegen/luau/src/backend/statement.rs b/codegen/luau/src/backend/statement.rs index 9611dec..36dec2f 100644 --- a/codegen/luau/src/backend/statement.rs +++ b/codegen/luau/src/backend/statement.rs @@ -4,8 +4,8 @@ use std::{ }; use wasm_ast::node::{ - Block, Br, BrIf, BrTable, Call, CallIndirect, FuncData, If, LabelType, MemoryGrow, SetGlobal, - SetLocal, SetTemporary, Statement, StoreAt, Terminator, + Block, Br, BrIf, BrTable, Call, CallIndirect, FuncData, If, LabelType, MemoryGrow, MemoryCopy, + MemoryFill, SetGlobal, SetLocal, SetTemporary, Statement, StoreAt, Terminator, }; use wasmparser::ValType; @@ -301,6 +301,32 @@ impl DriverNoContext for MemoryGrow { } } +impl DriverNoContext for MemoryCopy { + fn write(&self, w: &mut dyn Write) -> Result<()> { + let dst = self.dst(); + let src = self.src(); + let size = self.size(); + + write!(w, "rt.store.copy(memory_at_0, {dst}, {src}, ")?; + size.write(w)?; + write!(w, ")") + } +} + +impl DriverNoContext for MemoryFill { + fn write(&self, w: &mut dyn Write) -> Result<()> { + let mem = self.mem(); + let value = self.value(); + let n = self.n(); + + write!(w, "rt.store.copy(memory_at_0, {mem}, ")?; + value.write(w)?; + write!(w, ", ")?; + n.write(w)?; + write!(w, ")") + } +} + fn write_stat(stat: &dyn DriverNoContext, mng: &mut Manager, w: &mut dyn Write) -> Result<()> { indentation!(mng, w)?; stat.write(w)?; @@ -320,6 +346,8 @@ impl Driver for Statement { Self::SetGlobal(s) => write_stat(s, mng, w), Self::StoreAt(s) => write_stat(s, mng, w), Self::MemoryGrow(s) => write_stat(s, mng, w), + Self::MemoryCopy(s) => write_stat(s, mng, w), + Self::MemoryFill(s) => write_stat(s, mng, w), } } }