4 ms·
Truly my own ignorance... help me out! Is this port strictly for Apple silicon, ~ARM64, or is that the same thing? Where would this leave support for say, AWS G
by _ix 6y ago
Truly my own ignorance... help me out! Is this port strictly for Apple silicon, ~ARM64, or is that the same thing? Where would this leave support for say, AWS Graviton instances?
- mattip 6y agoPyPy already supports ARM64. This is additional work needed to support macOS 11 on M1. Apple changed some things that impact PyPy, like the register uses and ffi calling conventions. They updated clang to handle this, but PyPy's JIT emits assembler directly and so requires work to support M1.
- cesarb 6y ago> Apple changed some things that impact PyPy, like the register uses and ffi calling conventions. I thought everyone who used 64-bit ARM used ARM's AAPCS64 (https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst https://github.com/ARM-software/abi-aa/blob/master/aapcs64/a...), so the register usage and FFI calling convention should be the same as on Linux and Windows. What did Apple do differently that would affect the PyPy JIT?
- mattip 6y agoThere are some slight nuances that affect the JIT. https://developer.apple.com/documentation/xcode/writing_arm64_code_for_apple_platforms https://developer.apple.com/documentation/xcode/writing_arm6...
- a1369209993 6y agoLink is broken; asks user to enable remote code execution.
- saagarjha 6y agoPlease don’t call working links “broken”. It links to the right place, regardless of whether you like what happens when you get there.
- saagarjha 6y agoIn addition to a slightly modified ABI, Apple enforces W^X in hardware.
- glandium 6y agoAFAIK, the only notable difference is with arguments spilled on the stack being packed on macOS (except variadic arguments). If all your arguments are int or larger, that means essentially no difference. (source: I worked on making Firefox work on M1. We didn't need changes to XPCOM, for instance, although theoretically, we'd need some. I don't think the JIT needed changes either. Funnily enough, I had to fix libffi for variadic arguments, and the libffi shipped in macOS is broken)
- saagarjha 6y agovarargs in general is significantly different, I think it's even encoded as a char * in C++ name mangling.