VL
Size: a a a
VL
D
B
A
B
A
B
B
Ts
Ts
A
A
A
A
The biggest change in here is how JIT operates. On Apple silicon Macs, you're not allowed to both execute and write to write/execute pages at the same time. The way I understand it is that each thread has a state whether it can write or execute instructions in these pages. It is controlled using pthread_jit_write_protect_np function. Before the JIT can write to those pages, it needs to change the thread state to "non-protected". Before executing the JITed code, the thread state must be changed to "write-protected". This is handled using the new macros in mono/mini.h. They were implemented inline for performance reasons.
Ts
E
The biggest change in here is how JIT operates. On Apple silicon Macs, you're not allowed to both execute and write to write/execute pages at the same time. The way I understand it is that each thread has a state whether it can write or execute instructions in these pages. It is controlled using pthread_jit_write_protect_np function. Before the JIT can write to those pages, it needs to change the thread state to "non-protected". Before executing the JITed code, the thread state must be changed to "write-protected". This is handled using the new macros in mono/mini.h. They were implemented inline for performance reasons.
A
E
VL
Ts