RFR: 8262952: [macos_aarch64] os::commit_memory failure
Andrew Haley
aph at openjdk.java.net
Mon May 10 09:46:07 UTC 2021
On Tue, 4 May 2021 19:34:18 GMT, Gerard Ziemski <gziemski at openjdk.org> wrote:
> On x86_64 macOS the following sequence works just fine:
>
> attempt_reserve_memory_at(executable=false)
> commit_memory(executable=true)
>
> however, on aarch64 macOS it fails. The way to get "commit_memory(executable=true)" to work is to make the memory chunk executable right from the start at the time we reserve it.
>
> Please note, that:
>
> attempt_reserve_memory_at(executable=true)
> commit_memory(executable=false)
>
> works, so we can always downgrade memory by removing its "executable" privilege at the time we commit it some time later.
>
> Passes Mach5 hs-tier1,2,3,4,5 tests
src/hotspot/os/bsd/os_bsd.cpp line 1708:
> 1706: // On macOS aarch64 MAP_JIT is required if we want to commit an executable chunk
> 1707: // later, so always reserve executable memory right from the start
> 1708: MACOS_AARCH64_ONLY(| MAP_JIT);
Is this the right way to do it? Where do we ever map memory we want to use for code generation, but not ask for exec permission? Is that a bug?
-------------
PR: https://git.openjdk.java.net/jdk/pull/3865
More information about the hotspot-runtime-dev
mailing list