wasm: Delete load_symbol_zig. All tests pass!

This commit is contained in:
Brian Carroll 2022-09-10 10:21:44 +01:00 committed by Brendan Hansknecht
parent 12c6c25031
commit 197b626497
No known key found for this signature in database
GPG key ID: 0EA784685083E75B
3 changed files with 8 additions and 50 deletions

View file

@ -249,7 +249,7 @@ pub const DEBUG_SETTINGS: WasmDebugSettings = WasmDebugSettings {
let_stmt_ir: false && cfg!(debug_assertions),
instructions: false && cfg!(debug_assertions),
storage_map: false && cfg!(debug_assertions),
keep_test_binary: true && cfg!(debug_assertions),
keep_test_binary: false && cfg!(debug_assertions),
};
#[cfg(test)]

View file

@ -416,9 +416,9 @@ impl<'a> LowLevelCall<'a> {
code_builder.i32_add();
}
backend.storage.load_symbol_zig(code_builder, list);
backend.storage.load_symbols(code_builder, &[list]);
code_builder.i32_const(elem_alignment as i32);
backend.storage.load_symbol_zig(code_builder, index);
backend.storage.load_symbols(code_builder, &[index]);
code_builder.get_local(new_elem_local);
if new_elem_offset > 0 {
@ -2697,8 +2697,7 @@ pub fn call_higher_order_lowlevel<'a>(
// alignment: u32, i32
// element_width: usize, i32
backend.storage.load_symbols(cb, &[return_sym]);
backend.storage.load_symbol_zig(cb, *xs);
backend.storage.load_symbols(cb, &[return_sym, *xs]);
cb.i32_const(wrapper_fn_ptr);
if closure_data_exists {
backend
@ -2757,11 +2756,11 @@ fn list_map_n<'a>(
let cb = &mut backend.code_builder;
backend.storage.load_symbols(cb, &[return_sym]);
let mut args_vec = Vec::with_capacity_in(arg_symbols.len() + 1, backend.env.arena);
args_vec.push(return_sym);
args_vec.extend_from_slice(arg_symbols);
backend.storage.load_symbols(cb, &args_vec);
for s in arg_symbols {
backend.storage.load_symbol_zig(cb, *s);
}
cb.i32_const(wrapper_fn_ptr);
if closure_data_exists {
backend.storage.load_symbols(cb, &[captured_environment]);

View file

@ -397,47 +397,6 @@ impl<'a> Storage<'a> {
}
}
// TODO: expose something higher level instead, shared among higher-order calls
pub fn load_symbol_zig(&mut self, code_builder: &mut CodeBuilder, arg: Symbol) {
if let StoredValue::StackMemory {
location,
size,
alignment_bytes,
format: StackMemoryFormat::DataStructure,
} = self.get(&arg)
{
if *size == 0 {
// do nothing
} else if *size > 16 {
self.load_symbol_ccc(code_builder, arg);
} else {
let (local_id, offset) = location.local_and_offset(self.stack_frame_pointer);
code_builder.get_local(local_id);
let align = Align::from(*alignment_bytes);
if *size == 1 {
code_builder.i32_load8_u(align, offset);
} else if *size == 2 {
code_builder.i32_load16_u(align, offset);
} else if *size <= 4 {
code_builder.i32_load(align, offset);
} else if *size <= 8 {
code_builder.i64_load(align, offset);
} else if *size <= 12 {
code_builder.i64_load(align, offset);
code_builder.get_local(local_id);
code_builder.i32_load(align, offset + 8);
} else {
code_builder.i64_load(align, offset);
code_builder.get_local(local_id);
code_builder.i64_load(align, offset + 8);
}
}
} else {
self.load_symbol_ccc(code_builder, arg);
}
}
/// stack memory values are returned by pointer. e.g. a roc function
///
/// add : I128, I128 -> I128