Reimplement Atomic::xchg as templates. One goal is to generalize the API and make it more type-safe, eliminating the need for most casts. This includes replacing the type-information-losing xchg with type-safe xchg. Another goal is to allow more direct platform-specific implementation of the generic operation, for platforms that support that via generic intrinsics.
JDK-8184334, addressing only Atomic::xchg.