Make all Wasm blocks NoResult and always put return value in a local var.

This commit is contained in:
Brian Carroll 2021-12-21 12:15:06 +00:00
parent 51119c8142
commit 17dc6668ec
6 changed files with 48 additions and 34 deletions

View file

@ -144,8 +144,8 @@ pub fn helper_wasm<'a, T: Wasm32TestResult>(
debug_dir = format!("/tmp/roc/gen_wasm/{:016x}", src_hash);
std::fs::create_dir_all(&debug_dir).unwrap();
println!(
"Debug command:\n\twasm-objdump -sdx {}/final.wasm",
&debug_dir
"Debug commands:\n\twasm-objdump -dx {}/app.o\n\twasm-objdump -dx {}/final.wasm",
&debug_dir, &debug_dir,
);
Path::new(&debug_dir)
} else {

View file

@ -57,7 +57,7 @@ macro_rules! build_wrapper_body_primitive {
code_builder.$store_instruction($align, 0);
code_builder.get_local(frame_pointer_id);
code_builder.build_fn_header(local_types, frame_size, frame_pointer);
code_builder.build_fn_header_and_footer(local_types, frame_size, frame_pointer);
}
};
}
@ -84,7 +84,7 @@ fn build_wrapper_body_stack_memory(
code_builder.get_local(local_id);
code_builder.call(main_function_index, main_symbol_index, 0, true);
code_builder.get_local(local_id);
code_builder.build_fn_header(local_types, size as i32, frame_pointer);
code_builder.build_fn_header_and_footer(local_types, size as i32, frame_pointer);
}
macro_rules! wasm_test_result_stack_memory {
@ -147,7 +147,7 @@ impl Wasm32TestResult for () {
let main_symbol_index = main_function_index;
code_builder.call(main_function_index, main_symbol_index, 0, false);
code_builder.get_global(0);
code_builder.build_fn_header(&[], 0, None);
code_builder.build_fn_header_and_footer(&[], 0, None);
}
}