@@ -8,7 +8,7 @@ VIRTUAL_MEMORY_SUPPORTED :: true
8
8
foreign import lib " system:System.framework"
9
9
10
10
foreign lib {
11
- mach_task_self :: proc () -> u32 ---
11
+ mach_task_self_: u32
12
12
mach_vm_allocate :: proc (target: u32 , address: ^u64 , size: u64 , flags: i32 ) -> i32 ---
13
13
mach_vm_deallocate :: proc (target: u32 , address: u64 , size: u64 ) -> i32 ---
14
14
mach_vm_map :: proc (
@@ -56,7 +56,7 @@ VM_INHERIT_COPY :: 1
56
56
57
57
_allocate_virtual_memory :: proc " contextless" (size: int ) -> rawptr {
58
58
address: u64
59
- result := mach_vm_map (mach_task_self () , &address, u64 (size), 0 , VM_FLAGS_ANYWHERE, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
59
+ result := mach_vm_map (mach_task_self_ , &address, u64 (size), 0 , VM_FLAGS_ANYWHERE, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
60
60
if result != 0 {
61
61
return nil
62
62
}
@@ -76,7 +76,7 @@ _allocate_virtual_memory_superpage :: proc "contextless" () -> rawptr {
76
76
}
77
77
}
78
78
alignment_mask: u64 = SUPERPAGE_SIZE - 1 // Assumes a power of two size, ensured by an assertion in `virtual_memory.odin`.
79
- result := mach_vm_map (mach_task_self () , &address, SUPERPAGE_SIZE, alignment_mask, flags, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
79
+ result := mach_vm_map (mach_task_self_ , &address, SUPERPAGE_SIZE, alignment_mask, flags, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
80
80
if result != 0 {
81
81
return nil
82
82
}
@@ -87,15 +87,15 @@ _allocate_virtual_memory_superpage :: proc "contextless" () -> rawptr {
87
87
_allocate_virtual_memory_aligned :: proc " contextless" (size: int , alignment: int ) -> rawptr {
88
88
address: u64
89
89
alignment_mask: u64 = u64 (alignment) - 1
90
- result := mach_vm_map (mach_task_self () , &address, u64 (size), alignment_mask, VM_FLAGS_ANYWHERE, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
90
+ result := mach_vm_map (mach_task_self_ , &address, u64 (size), alignment_mask, VM_FLAGS_ANYWHERE, MEMORY_OBJECT_NULL, 0 , false , VM_PROT_READ|VM_PROT_WRITE, VM_PROT_READ|VM_PROT_WRITE, VM_INHERIT_COPY)
91
91
if result != 0 {
92
92
return nil
93
93
}
94
94
return rawptr (uintptr (address))
95
95
}
96
96
97
97
_free_virtual_memory :: proc " contextless" (ptr: rawptr , size: int ) {
98
- mach_vm_deallocate (mach_task_self () , u64 (uintptr (ptr)), u64 (size))
98
+ mach_vm_deallocate (mach_task_self_ , u64 (uintptr (ptr)), u64 (size))
99
99
}
100
100
101
101
_resize_virtual_memory :: proc " contextless" (ptr: rawptr , old_size: int , new_size: int , alignment: int ) -> rawptr {
@@ -112,7 +112,7 @@ _resize_virtual_memory :: proc "contextless" (ptr: rawptr, old_size: int, new_si
112
112
return ptr
113
113
} else if new_size_pages > old_size_pages {
114
114
new_address: u64
115
- result_alloc := mach_vm_allocate (mach_task_self () , &new_address, u64 (new_size), VM_FLAGS_ANYWHERE)
115
+ result_alloc := mach_vm_allocate (mach_task_self_ , &new_address, u64 (new_size), VM_FLAGS_ANYWHERE)
116
116
if result_alloc != 0 {
117
117
return nil
118
118
}
@@ -123,16 +123,16 @@ _resize_virtual_memory :: proc "contextless" (ptr: rawptr, old_size: int, new_si
123
123
}
124
124
125
125
cur_protection, max_protection: i32
126
- result_remap := mach_vm_remap (mach_task_self () , &new_address, u64 (old_size), alignment_mask, VM_FLAGS_ANYWHERE, mach_task_self () , u64 (uintptr (ptr)), true , &cur_protection, &max_protection, VM_INHERIT_COPY)
126
+ result_remap := mach_vm_remap (mach_task_self_ , &new_address, u64 (old_size), alignment_mask, VM_FLAGS_ANYWHERE, mach_task_self_ , u64 (uintptr (ptr)), true , &cur_protection, &max_protection, VM_INHERIT_COPY)
127
127
if result_remap != 0 {
128
128
return nil
129
129
}
130
- mach_vm_deallocate (mach_task_self () , u64 (uintptr (ptr)), u64 (old_size))
130
+ mach_vm_deallocate (mach_task_self_ , u64 (uintptr (ptr)), u64 (old_size))
131
131
return rawptr (uintptr (new_address))
132
132
} else {
133
133
new_size_boundary := new_size_pages * PAGE_SIZE
134
134
shrink_by := u64 (old_size - new_size)
135
- mach_vm_deallocate (mach_task_self () , u64 (uintptr (ptr) + uintptr (new_size_boundary)), shrink_by)
135
+ mach_vm_deallocate (mach_task_self_ , u64 (uintptr (ptr) + uintptr (new_size_boundary)), shrink_by)
136
136
return rawptr (uintptr (ptr))
137
137
}
138
138
}
0 commit comments