From 194f4892094a025e3e8506545580cabbfbff03e1 Mon Sep 17 00:00:00 2001 From: Rerumu Date: Sun, 12 Dec 2021 22:22:07 -0500 Subject: [PATCH] Refactor LuaJIT table allocation --- wasm/src/writer/luajit.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wasm/src/writer/luajit.rs b/wasm/src/writer/luajit.rs index a6746c4..82640b4 100644 --- a/wasm/src/writer/luajit.rs +++ b/wasm/src/writer/luajit.rs @@ -698,11 +698,10 @@ impl<'a> LuaJIT<'a> { } fn write_list(name: &str, len: usize, w: Writer) -> Result<()> { - if len == 0 { - return Ok(()); - } + let hash = len.min(1); + let len = len.saturating_sub(1); - write!(w, "local {} = {{[0] = {}}}", name, "nil, ".repeat(len)) + write!(w, "local {} = table_new({}, {})", name, len, hash) } impl<'a> Transpiler<'a> for LuaJIT<'a> { @@ -719,6 +718,7 @@ impl<'a> Transpiler<'a> for LuaJIT<'a> { Self::gen_localize(&func_list, w)?; + write!(w, "local table_new = require(\"table.new\")")?; write_list("FUNC_LIST", self.wasm.functions_space(), w)?; write_list("TABLE_LIST", self.wasm.table_space(), w)?; write_list("MEMORY_LIST", self.wasm.memory_space(), w)?;