Tim Clem (@tclem) commented about dlls/ntdll/unix/virtual.c:
addr = next_addr; }
} +#elif defined(__APPLE__) +static vm_prot_t get_mach_prot( mach_vm_address_t addr ) +{
- size_t i, idx = (size_t)ROUND_ADDR( addr, host_page_mask ) >> page_shift;
- const BYTE *vprot_ptr;
- BYTE vprot = 0;
- vm_prot_t mach_prot = VM_PROT_NONE;
- if ((idx >> pages_vprot_shift) >= pages_vprot_size) return VM_PROT_NONE;
- if (!pages_vprot[idx >> pages_vprot_shift]) return VM_PROT_NONE;
- assert( host_page_mask >> page_shift <= pages_vprot_mask );
- vprot_ptr = pages_vprot[idx >> pages_vprot_shift] + (idx & pages_vprot_mask);
- for (i = 0; i < host_page_size / page_size; i++) vprot |= vprot_ptr[i];
Is it worth factoring this out of get_host_page_vprot and reusing that here? Also the code in get_host_page_vprot has a separate case for !_WIN64; is that relevant here?