luaur_code_gen/functions/
assemble_helpers_code_gen_x_64.rs1use crate::functions::emit_clear_native_flag_emit_common_x_64::emit_clear_native_flag;
2use crate::functions::emit_exit_emit_common_x_64::emit_exit;
3use crate::functions::emit_interrupt_emit_common_x_64::emit_interrupt;
4use crate::functions::emit_return_emit_common_x_64::emit_return;
5use crate::functions::emit_update_pc_for_exit_emit_common_x_64::emit_update_pc_for_exit;
6use crate::records::assembly_builder_x_64::AssemblyBuilderX64;
7use crate::records::module_helpers::ModuleHelpers;
8
9pub fn assemble_helpers(build: &mut AssemblyBuilderX64, helpers: &mut ModuleHelpers) {
10 if build.log_text {
11 build.log_append(format_args!("; updatePcAndContinueInVm\n"));
12 }
13 build.set_label_label(&mut helpers.updatePcAndContinueInVm);
14 emit_update_pc_for_exit(build);
15
16 if build.log_text {
17 build.log_append(format_args!("; exitContinueVmClearNativeFlag\n"));
18 }
19 build.set_label_label(&mut helpers.exitContinueVmClearNativeFlag);
20 emit_clear_native_flag(build);
21
22 if build.log_text {
23 build.log_append(format_args!("; exitContinueVm\n"));
24 }
25 build.set_label_label(&mut helpers.exitContinueVm);
26 emit_exit(build, true);
27
28 if build.log_text {
29 build.log_append(format_args!("; exitNoContinueVm\n"));
30 }
31 build.set_label_label(&mut helpers.exitNoContinueVm);
32 emit_exit(build, false);
33
34 if build.log_text {
35 build.log_append(format_args!("; interrupt\n"));
36 }
37 build.set_label_label(&mut helpers.interrupt);
38 emit_interrupt(build);
39
40 if build.log_text {
41 build.log_append(format_args!("; return\n"));
42 }
43 build.set_label_label(&mut helpers.return_);
44 emit_return(build, helpers);
45}