luaur_code_gen/methods/
code_allocator_deallocate.rs1use crate::functions::make_pages_not_executable_code_allocator::make_pages_not_executable;
2use crate::macros::codegen_assert::CODEGEN_ASSERT;
3use crate::records::code_allocation_data::CodeAllocationData;
4use crate::records::code_allocator::CodeAllocator;
5use luaur_common::FFlag;
6
7impl CodeAllocator {
8 pub fn deallocate(&mut self, code_allocation_data: CodeAllocationData) {
9 CODEGEN_ASSERT!(FFlag::LuauCodegenFreeBlocks.get());
10
11 if code_allocation_data.allocation_start.is_null() {
12 return;
13 }
14
15 let result = make_pages_not_executable(
16 code_allocation_data.allocation_start,
17 code_allocation_data.allocation_size,
18 );
19 CODEGEN_ASSERT!(result);
20
21 CODEGEN_ASSERT!(self.live_allocations != 0);
22 self.live_allocations -= 1;
23 }
24}