Fix constant generation

This commit is contained in:
Rerumu
2022-05-19 17:09:44 -04:00
parent f9cf75c98a
commit 0e92163cb3
7 changed files with 115 additions and 112 deletions
+25 -2
View File
@@ -8,8 +8,7 @@ use wasm_ast::node::{
use crate::analyzer::operator::bin_symbol_of;
use super::manager::{
write_cmp_op, write_condition, write_f32, write_f64, write_separated, write_variable, Driver,
Manager,
write_cmp_op, write_condition, write_separated, write_variable, Driver, Manager,
};
impl Driver for Recall {
@@ -69,6 +68,30 @@ impl Driver for MemoryGrow {
}
}
pub fn write_f32(number: f32, w: &mut dyn Write) -> Result<()> {
let sign = if number.is_sign_negative() { "-" } else { "" };
if number.is_infinite() {
write!(w, "{sign}math.huge ")
} else if number.is_nan() {
write!(w, "{sign}0/0 ")
} else {
write!(w, "{number:e} ")
}
}
pub fn write_f64(number: f64, w: &mut dyn Write) -> Result<()> {
let sign = if number.is_sign_negative() { "-" } else { "" };
if number.is_infinite() {
write!(w, "{sign}math.huge ")
} else if number.is_nan() {
write!(w, "{sign}0/0 ")
} else {
write!(w, "{number:e} ")
}
}
impl Driver for Value {
fn write(&self, _: &mut Manager, w: &mut dyn Write) -> Result<()> {
match self {
-24
View File
@@ -55,30 +55,6 @@ pub fn write_ascending(prefix: &str, range: Range<usize>, w: &mut dyn Write) ->
write_separated(range, |i, w| write!(w, "{prefix}_{i}"), w)
}
pub fn write_f32(number: f32, w: &mut dyn Write) -> Result<()> {
let sign = if number.is_sign_negative() { "-" } else { "" };
if number.is_infinite() {
write!(w, "{sign}math.huge ")
} else if number.is_nan() {
write!(w, "{sign}0/0 ")
} else {
write!(w, "{number:e} ")
}
}
pub fn write_f64(number: f64, w: &mut dyn Write) -> Result<()> {
let sign = if number.is_sign_negative() { "-" } else { "" };
if number.is_infinite() {
write!(w, "{sign}math.huge ")
} else if number.is_nan() {
write!(w, "{sign}0/0 ")
} else {
write!(w, "{number:e} ")
}
}
pub fn write_variable(var: usize, mng: &Manager, w: &mut dyn Write) -> Result<()> {
if let Some(rem) = var.checked_sub(mng.num_param) {
write!(w, "loc_{rem} ")