src/hotspot/share/runtime/atomic.hpp
changeset 51330 edd33b9946ca
parent 50029 ea0a16ba6ac0
child 53244 9807daeb47c4
--- a/src/hotspot/share/runtime/atomic.hpp	Tue Aug 07 15:45:07 2018 -0700
+++ b/src/hotspot/share/runtime/atomic.hpp	Tue Aug 07 19:35:50 2018 -0400
@@ -635,29 +635,6 @@
   }
 };
 
-// Most platforms do not support atomic add on a 2-byte value. However,
-// if the value occupies the most significant 16 bits of an aligned 32-bit
-// word, then we can do this with an atomic add of (add_value << 16)
-// to the 32-bit word.
-//
-// The least significant parts of this 32-bit word will never be affected, even
-// in case of overflow/underflow.
-//
-// Use the ATOMIC_SHORT_PAIR macro (see macros.hpp) to get the desired alignment.
-template<>
-struct Atomic::AddImpl<short, short> {
-  short operator()(short add_value, short volatile* dest, atomic_memory_order order) const {
-#ifdef VM_LITTLE_ENDIAN
-    assert((intx(dest) & 0x03) == 0x02, "wrong alignment");
-    int new_value = Atomic::add(add_value << 16, (volatile int*)(dest-1), order);
-#else
-    assert((intx(dest) & 0x03) == 0x00, "wrong alignment");
-    int new_value = Atomic::add(add_value << 16, (volatile int*)(dest), order);
-#endif
-    return (short)(new_value >> 16); // preserves sign
-  }
-};
-
 template<typename Derived>
 template<typename I, typename D>
 inline D Atomic::FetchAndAdd<Derived>::operator()(I add_value, D volatile* dest,