In my understanding, it’s both: you’re right about Automatic Reference Counting (ARC) being a compile time pass. But the reference counts that they use for said retain/release are atomic reference counted (ARC).
ARC certainly helps ARC be more performant than ARC without ARC due to the elided traffic on the count. (lol)