+#ifndef ANNOTATE_HAPPENS_BEFORE
+# define ANNOTATE_HAPPENS_BEFORE(obj)
+# define ANNOTATE_HAPPENS_AFTER(obj)
+# define ANNOTATE_UNPROTECTED_READ(x) (x)
+#endif
+
+#ifndef UMTX_FULL_BARRIER
+# if !ICU_USE_THREADS
+# define UMTX_FULL_BARRIER
+# elif U_HAVE_GCC_ATOMICS
+# define UMTX_FULL_BARRIER __sync_synchronize();
+# elif defined(_MSC_VER) && _MSC_VER >= 1500
+ /* From MSVC intrin.h. Use _ReadWriteBarrier() only on MSVC 9 and higher. */
+# define UMTX_FULL_BARRIER _ReadWriteBarrier();
+# elif U_PLATFORM_IS_DARWIN_BASED
+# define UMTX_FULL_BARRIER OSMemoryBarrier();
+# else
+# define UMTX_FULL_BARRIER \
+ { \
+ umtx_lock(NULL); \
+ umtx_unlock(NULL); \
+ }
+# endif
+#endif
+
+#ifndef UMTX_ACQUIRE_BARRIER
+# define UMTX_ACQUIRE_BARRIER UMTX_FULL_BARRIER
+#endif
+
+#ifndef UMTX_RELEASE_BARRIER
+# define UMTX_RELEASE_BARRIER UMTX_FULL_BARRIER