mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 20:28:02 +00:00
wasm: Delete load_symbol_zig. All tests pass!
This commit is contained in:
parent
12c6c25031
commit
197b626497
3 changed files with 8 additions and 50 deletions
|
@ -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)]
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue