Reimplement Atomic::add as a template. 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 add_ptr with type-safe add. 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::add.