#if MONO_HAS_CLANG_THREAD_SANITIZER
#define MONO_UNLOCKED_ATTRS MONO_NO_SANITIZE_THREAD MONO_NEVER_INLINE static
+#elif defined(_MSC_VER)
+#define MONO_UNLOCKED_ATTRS MONO_ALWAYS_INLINE static
#else
#define MONO_UNLOCKED_ATTRS MONO_ALWAYS_INLINE static inline
#endif
return *dest += add;
}
+MONO_UNLOCKED_ATTRS
+gdouble
+UnlockedAddDouble (gdouble *dest, gdouble add)
+{
+ return *dest += add;
+}
+
MONO_UNLOCKED_ATTRS
gint64
UnlockedSubtract64 (gint64 *dest, gint64 sub)
*dest = val;
}
+MONO_UNLOCKED_ATTRS
+void
+UnlockedWriteBool (gboolean *dest, gboolean val)
+{
+ *dest = val;
+}
+
MONO_UNLOCKED_ATTRS
gint32
UnlockedRead (gint32 *src)
return *src;
}
+MONO_UNLOCKED_ATTRS
+gboolean
+UnlockedReadBool (gboolean *src)
+{
+ return *src;
+}
+
+MONO_UNLOCKED_ATTRS
+gpointer
+UnlockedReadPointer (volatile gpointer *src)
+{
+ return *src;
+}
+
#endif /* _UNLOCKED_H_ */