ponyc
ponyc copied to clipboard
Implement Arm specific ABA protections
trafficstars
In an earlier commit, I removed the Arm specific ABA handling as it was incorrect. We are currently using the x86 ABA handling that will work on Arm but is more expensive than it has to be.
We could implement the Arm ABA handling and get a low level performance win on Arm CPUs.
@mjp41 took a look at the original Arm ABA code and said "yeah that is broken". "It actually needs to call intrinsics for LL and SC, and it isnt. LDREX and STREX".
I'm not particularly knowledgable about Arm ISA so that doesn't mean much to me at the moment, but it will to someone in the future when they go to implement this enhancement.