Remove param prefix for parameters

This commit is contained in:
Rerumu 2022-08-19 19:47:50 -04:00
parent a78a3cd58b
commit 33bd235c0f
6 changed files with 14 additions and 52 deletions

View File

@ -10,9 +10,7 @@ use wasm_ast::node::{
use crate::analyzer::as_symbol::AsSymbol;
use super::manager::{
write_cmp_op, write_condition, write_separated, write_variable, Driver, Manager,
};
use super::manager::{write_cmp_op, write_condition, write_separated, Driver, Manager};
macro_rules! impl_write_number {
($name:tt, $numeric:ty) => {
@ -47,8 +45,8 @@ impl Driver for GetTemporary {
}
impl Driver for GetLocal {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
write_variable(self.var(), mng, w)
fn write(&self, _: &mut Manager, w: &mut dyn Write) -> Result<()> {
write!(w, "loc_{} ", self.var())
}
}

View File

@ -13,7 +13,6 @@ pub struct Manager {
table_map: HashMap<usize, usize>,
label_list: Vec<usize>,
num_label: usize,
num_param: usize,
}
impl Manager {
@ -27,10 +26,6 @@ impl Manager {
self.table_map = map;
}
pub fn set_num_param(&mut self, num: usize) {
self.num_param = num;
}
pub fn label_list(&self) -> &[usize] {
&self.label_list
}
@ -71,14 +66,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_variable(var: usize, mng: &Manager, w: &mut dyn Write) -> Result<()> {
if let Some(rem) = var.checked_sub(mng.num_param) {
write!(w, "loc_{rem} ")
} else {
write!(w, "param_{var} ")
}
}
pub fn write_cmp_op(cmp: &CmpOp, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
if let Some(symbol) = cmp.op_type().as_symbol() {
cmp.lhs().write(mng, w)?;

View File

@ -11,9 +11,7 @@ use wasmparser::ValType;
use crate::analyzer::br_table;
use super::manager::{
write_ascending, write_condition, write_separated, write_variable, Driver, Manager,
};
use super::manager::{write_ascending, write_condition, write_separated, Driver, Manager};
impl Driver for Br {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
@ -223,8 +221,7 @@ impl Driver for SetTemporary {
impl Driver for SetLocal {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
write_variable(self.var(), mng, w)?;
write!(w, "= ")?;
write!(w, "loc_{} = ", self.var())?;
self.value().write(mng, w)
}
}
@ -281,12 +278,12 @@ impl Driver for Statement {
fn write_parameter_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> {
write!(w, "function(")?;
write_ascending("param", 0..ast.num_param(), w)?;
write_ascending("loc", 0..ast.num_param(), w)?;
write!(w, ")")
}
fn write_variable_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> {
let mut total = 0;
let mut total = ast.num_param();
for data in ast.local_data().iter().filter(|v| v.0 != 0) {
let range = total..total + usize::try_from(data.0).unwrap();
@ -322,7 +319,6 @@ impl Driver for FuncData {
}
mng.set_table_map(br_map);
mng.set_num_param(self.num_param());
self.code().write(mng, w)?;
if self.num_result() != 0 {

View File

@ -10,9 +10,7 @@ use wasm_ast::node::{
use crate::analyzer::as_symbol::AsSymbol;
use super::manager::{
write_cmp_op, write_condition, write_separated, write_variable, Driver, Manager,
};
use super::manager::{write_cmp_op, write_condition, write_separated, Driver, Manager};
macro_rules! impl_write_number {
($name:tt, $numeric:ty) => {
@ -47,8 +45,8 @@ impl Driver for GetTemporary {
}
impl Driver for GetLocal {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
write_variable(self.var(), mng, w)
fn write(&self, _: &mut Manager, w: &mut dyn Write) -> Result<()> {
write!(w, "loc_{} ", self.var())
}
}

View File

@ -12,7 +12,6 @@ use crate::analyzer::as_symbol::AsSymbol;
pub struct Manager {
table_map: HashMap<usize, usize>,
label_list: Vec<Option<LabelType>>,
num_param: usize,
}
impl Manager {
@ -26,10 +25,6 @@ impl Manager {
self.table_map = map;
}
pub fn set_num_param(&mut self, num_param: usize) {
self.num_param = num_param;
}
pub fn label_list(&self) -> &[Option<LabelType>] {
&self.label_list
}
@ -67,14 +62,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_variable(var: usize, mng: &Manager, w: &mut dyn Write) -> Result<()> {
if let Some(rem) = var.checked_sub(mng.num_param) {
write!(w, "loc_{rem} ")
} else {
write!(w, "param_{var} ")
}
}
pub fn write_cmp_op(cmp: &CmpOp, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
if let Some(symbol) = cmp.op_type().as_symbol() {
cmp.lhs().write(mng, w)?;

View File

@ -11,9 +11,7 @@ use wasmparser::ValType;
use crate::analyzer::br_target;
use super::manager::{
write_ascending, write_condition, write_separated, write_variable, Driver, Manager,
};
use super::manager::{write_ascending, write_condition, write_separated, Driver, Manager};
impl Driver for Br {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
@ -237,8 +235,7 @@ impl Driver for SetTemporary {
impl Driver for SetLocal {
fn write(&self, mng: &mut Manager, w: &mut dyn Write) -> Result<()> {
write_variable(self.var(), mng, w)?;
write!(w, "= ")?;
write!(w, "loc_{} = ", self.var())?;
self.value().write(mng, w)
}
}
@ -295,12 +292,12 @@ impl Driver for Statement {
fn write_parameter_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> {
write!(w, "function(")?;
write_ascending("param", 0..ast.num_param(), w)?;
write_ascending("loc", 0..ast.num_param(), w)?;
write!(w, ")")
}
fn write_variable_list(ast: &FuncData, w: &mut dyn Write) -> Result<()> {
let mut total = 0;
let mut total = ast.num_param();
for data in ast.local_data().iter().filter(|v| v.0 != 0) {
let range = total..total + usize::try_from(data.0).unwrap();
@ -344,7 +341,6 @@ impl Driver for FuncData {
}
mng.set_table_map(br_data.0);
mng.set_num_param(self.num_param());
self.code().write(mng, w)?;
if self.num_result() != 0 {