On Fri, 11 Mar 2022 10:44:25 GMT, Thomas Stuefe <stu...@openjdk.org> wrote:

> > On 3/11/22 10:12, Thomas Stuefe wrote: We could also redefine SafeFetch on 
> > MacOS/AArch64 to not need WX. We could do this by statically generating 
> > SafeFetch on that platform, and it wouldn't be in the JIT region at all. 
> > Why not just do that? Do you mean using inline assembly?
> > I'd use out-of-line assembly, as I do for atomic compare-and-swap on linux: 
> > https://github.com/openjdk/jdk/blob/master/src/hotspot/os_cpu/linux_aarch64/atomic_linux_aarch64.S
> >  But I guess inline would work.
> 
> Oh, this is neat. It would work on all platforms too, or on all we care to 
> implement it for. And it would nicely solve the initialization window problem 
> since it would work before stub routines are generated. We could throw 
> `CanUseSafeFetch` away.
> 
> It seems we already do static assembly on bsd aarch. So there is already a 
> path to follow.
> 
> But this could also be done as a follow up enhancement. I still like the OS 
> TLS variable idea.

I spent some time doing a static implementation of SafeFetch on Linux x64, and 
its not super trivial. The problem is that we need to know addresses of 
instructions inside that function. I can set labels in assembly, and I can 
export them, but so far I have been unable to use them as addresses in C++ 
code. I will research some more.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7727

Reply via email to