--- old/src/hotspot/share/runtime/atomic.hpp 2018-03-07 23:12:04.626647119 -0500 +++ new/src/hotspot/share/runtime/atomic.hpp 2018-03-07 23:12:03.682777235 -0500 @@ -367,7 +367,6 @@ T, PlatformOp, typename EnableIf::value || IsRegisteredEnum::value || IsPointer::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T const volatile* dest) const { // Forward to the platform handler for the size of T. @@ -387,7 +386,6 @@ T, PlatformOp, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T const volatile* dest) const { typedef PrimitiveConversions::Translate Translator; @@ -405,7 +403,7 @@ // supports wide atomics, then it has to use specialization // of Atomic::PlatformLoad for that wider size class. template -struct Atomic::PlatformLoad VALUE_OBJ_CLASS_SPEC { +struct Atomic::PlatformLoad { template T operator()(T const volatile* dest) const { STATIC_ASSERT(sizeof(T) <= sizeof(void*)); // wide atomics need specialization @@ -421,7 +419,6 @@ T, T, PlatformOp, typename EnableIf::value || IsRegisteredEnum::value>::type> - VALUE_OBJ_CLASS_SPEC { void operator()(T new_value, T volatile* dest) const { // Forward to the platform handler for the size of T. @@ -439,7 +436,6 @@ T*, D*, PlatformOp, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { void operator()(T* new_value, D* volatile* dest) const { // Allow derived to base conversion, and adding cv-qualifiers. @@ -459,7 +455,6 @@ T, T, PlatformOp, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { void operator()(T new_value, T volatile* dest) const { typedef PrimitiveConversions::Translate Translator; @@ -477,7 +472,7 @@ // supports wide atomics, then it has to use specialization // of Atomic::PlatformStore for that wider size class. template -struct Atomic::PlatformStore VALUE_OBJ_CLASS_SPEC { +struct Atomic::PlatformStore { template void operator()(T new_value, T volatile* dest) const { @@ -491,13 +486,13 @@ // be complete. template -struct Atomic::FetchAndAdd VALUE_OBJ_CLASS_SPEC { +struct Atomic::FetchAndAdd { template D operator()(I add_value, D volatile* dest) const; }; template -struct Atomic::AddAndFetch VALUE_OBJ_CLASS_SPEC { +struct Atomic::AddAndFetch { template D operator()(I add_value, D volatile* dest) const; }; @@ -541,7 +536,7 @@ // specializations of the class. The platform file is responsible for // providing those. template -struct Atomic::PlatformCmpxchg VALUE_OBJ_CLASS_SPEC { +struct Atomic::PlatformCmpxchg { template T operator()(T exchange_value, T volatile* dest, @@ -552,7 +547,7 @@ // Define the class before including platform file, which may use this // as a base class, requiring it be complete. The definition is later // in this file, near the other definitions related to cmpxchg. -struct Atomic::CmpxchgByteUsingInt VALUE_OBJ_CLASS_SPEC { +struct Atomic::CmpxchgByteUsingInt { template T operator()(T exchange_value, T volatile* dest, @@ -566,7 +561,7 @@ // specializations of the class. The platform file is responsible for // providing those. template -struct Atomic::PlatformXchg VALUE_OBJ_CLASS_SPEC { +struct Atomic::PlatformXchg { template T operator()(T exchange_value, T volatile* dest) const; @@ -605,7 +600,6 @@ IsIntegral::value && (sizeof(I) <= sizeof(D)) && (IsSigned::value == IsSigned::value)>::type> - VALUE_OBJ_CLASS_SPEC { D operator()(I add_value, D volatile* dest) const { D addend = add_value; @@ -617,7 +611,6 @@ struct Atomic::AddImpl< I, P*, typename EnableIf::value && (sizeof(I) <= sizeof(P*))>::type> - VALUE_OBJ_CLASS_SPEC { P* operator()(I add_value, P* volatile* dest) const { STATIC_ASSERT(sizeof(intptr_t) == sizeof(P*)); @@ -640,7 +633,7 @@ // // Use the ATOMIC_SHORT_PAIR macro (see macros.hpp) to get the desired alignment. template<> -struct Atomic::AddImpl VALUE_OBJ_CLASS_SPEC { +struct Atomic::AddImpl { short operator()(short add_value, short volatile* dest) const { #ifdef VM_LITTLE_ENDIAN assert((intx(dest) & 0x03) == 0x02, "wrong alignment"); @@ -707,7 +700,6 @@ struct Atomic::CmpxchgImpl< T, T, T, typename EnableIf::value || IsRegisteredEnum::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T exchange_value, T volatile* dest, T compare_value, cmpxchg_memory_order order) const { @@ -734,7 +726,6 @@ typename EnableIf::value && IsSame::type, typename RemoveCV::type>::value>::type> - VALUE_OBJ_CLASS_SPEC { D* operator()(T* exchange_value, D* volatile* dest, U* compare_value, cmpxchg_memory_order order) const { @@ -758,7 +749,6 @@ struct Atomic::CmpxchgImpl< T, T, T, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T exchange_value, T volatile* dest, T compare_value, cmpxchg_memory_order order) const { @@ -830,7 +820,6 @@ struct Atomic::XchgImpl< T, T, typename EnableIf::value || IsRegisteredEnum::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T exchange_value, T volatile* dest) const { // Forward to the platform handler for the size of T. @@ -847,7 +836,6 @@ struct Atomic::XchgImpl< T*, D*, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { D* operator()(T* exchange_value, D* volatile* dest) const { // Allow derived to base conversion, and adding cv-qualifiers. @@ -867,7 +855,6 @@ struct Atomic::XchgImpl< T, T, typename EnableIf::value>::type> - VALUE_OBJ_CLASS_SPEC { T operator()(T exchange_value, T volatile* dest) const { typedef PrimitiveConversions::Translate Translator;