luaur_code_gen/functions/
get_full_stack_size.rs1use crate::enums::abix_64::ABIX64;
2use crate::functions::get_non_vol_xmm_storage_size::get_non_vol_xmm_storage_size;
3
4pub const kStackAlign: u32 = 8;
5pub const kStackLocalStorage: u32 = 8 * 3;
6pub const kStackSpillStorage: u32 = 8 * 13;
7pub const kStackExtraArgumentStorage: u32 = 2 * 8;
8pub const kStackRegHomeStorage: u32 = 4 * 8;
9pub const kStackOffsetToLocals: u32 = kStackExtraArgumentStorage + kStackRegHomeStorage;
10pub const kStackOffsetToSpillSlots: u32 = kStackOffsetToLocals + kStackLocalStorage;
11
12#[inline]
13pub fn get_full_stack_size(abi: ABIX64, xmm_reg_count: u8) -> u32 {
14 kStackOffsetToSpillSlots
15 + kStackSpillStorage
16 + get_non_vol_xmm_storage_size(abi, xmm_reg_count)
17 + kStackAlign
18}