From 99e74e7ea11bde918b7d264de7051e4e0e4ef6a0 Mon Sep 17 00:00:00 2001 From: Rerumu Date: Thu, 16 Jun 2022 16:09:21 -0400 Subject: [PATCH] Fix software integer instantiation --- codegen-luau/runtime/runtime.lua | 10 +++++----- codegen-luau/src/analyzer/localize.rs | 2 +- codegen-luau/src/backend/expression.rs | 6 +++--- codegen-luau/src/backend/statement.rs | 2 +- dev-test/tests/luau_translate.rs | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/codegen-luau/runtime/runtime.lua b/codegen-luau/runtime/runtime.lua index eec501b..faaa14f 100644 --- a/codegen-luau/runtime/runtime.lua +++ b/codegen-luau/runtime/runtime.lua @@ -21,14 +21,14 @@ local function no_op(num) end do - local num = {} + local temp = {} - num.K_ZERO = I64.K_ZERO - num.K_ONE = I64.K_ONE + temp.K_ZERO = I64.K_ZERO + temp.K_ONE = I64.K_ONE - num.from_u32 = num_from_u32 + temp.from_u32 = num_from_u32 - module.num = num + module.i64 = temp end do diff --git a/codegen-luau/src/analyzer/localize.rs b/codegen-luau/src/analyzer/localize.rs index b0514a8..93d3d3d 100644 --- a/codegen-luau/src/analyzer/localize.rs +++ b/codegen-luau/src/analyzer/localize.rs @@ -32,7 +32,7 @@ impl Visitor for Visit { _ => return, }; - self.result.insert(("num", name)); + self.result.insert(("i64", name)); } fn visit_un_op(&mut self, v: &UnOp) { diff --git a/codegen-luau/src/backend/expression.rs b/codegen-luau/src/backend/expression.rs index 51e4773..ae5d762 100644 --- a/codegen-luau/src/backend/expression.rs +++ b/codegen-luau/src/backend/expression.rs @@ -93,14 +93,14 @@ pub fn write_i32(number: i32, w: &mut dyn Write) -> Result<()> { fn write_i64(number: i64, w: &mut dyn Write) -> Result<()> { match number { - 0 => write!(w, "num_K_ZERO "), - 1 => write!(w, "num_K_ONE "), + 0 => write!(w, "i64_K_ZERO "), + 1 => write!(w, "i64_K_ONE "), _ => { let list = number.to_ne_bytes(); let a = u32::from_ne_bytes(list[0..4].try_into().unwrap()); let b = u32::from_ne_bytes(list[4..8].try_into().unwrap()); - write!(w, "num_from_u32({a}, {b}) ") + write!(w, "i64_from_u32({a}, {b}) ") } } } diff --git a/codegen-luau/src/backend/statement.rs b/codegen-luau/src/backend/statement.rs index 1426820..64dd041 100644 --- a/codegen-luau/src/backend/statement.rs +++ b/codegen-luau/src/backend/statement.rs @@ -261,7 +261,7 @@ fn write_variable_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> { for data in ast.local_data.iter().filter(|v| v.count() != 0) { let range = total..total + usize::try_from(data.count()).unwrap(); let zero = if data.value_type() == ValueType::I64 { - "num_K_ZERO " + "i64_K_ZERO " } else { "0 " }; diff --git a/dev-test/tests/luau_translate.rs b/dev-test/tests/luau_translate.rs index e9ad3f5..dddebca 100644 --- a/dev-test/tests/luau_translate.rs +++ b/dev-test/tests/luau_translate.rs @@ -23,7 +23,7 @@ impl Luau { let data_1 = (data & 0xFFFFFFFF) as u32; let data_2 = (data >> 32 & 0xFFFFFFFF) as u32; - write!(w, "{{{data_1}, {data_2}}}") + write!(w, "rt.i64.from_u32({data_1}, {data_2})") } fn write_expression(data: &Expression, w: &mut dyn Write) -> Result<()> {