- 27 9月, 2018 1 次提交
-
-
由 Behdad Esfahbod 提交于
-
- 17 9月, 2018 2 次提交
-
-
由 Behdad Esfahbod 提交于
Some clang versions define static_assert as a macro apparently, so we cannot redefine it... This reverts commit 94bfea0c. This reverts commit 4e626278.
-
由 Behdad Esfahbod 提交于
So we don't accidentally break it again.
-
- 10 9月, 2018 1 次提交
-
-
由 Behdad Esfahbod 提交于
John Emmas reported on mailing list that build with MSVC is failing. Not sure why bots don't catch it, but this should fix.
-
- 26 8月, 2018 1 次提交
-
-
由 Behdad Esfahbod 提交于
Sorry for the noise, downstream custom builders. Please adjust.
-
- 09 8月, 2018 7 次提交
-
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
Found and fixed a couple bugs. Found a couple multithreading issues. Marked them with "XXX-MT-bug".
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
Removes volatile from fallback implementation. That was handwavy anyway.
-
由 Behdad Esfahbod 提交于
If ever int is not 32bit, we'll fix this...
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
-
- 02 8月, 2018 5 次提交
-
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
-
- 01 8月, 2018 8 次提交
-
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
lwsync() is a full read/write-barrier. That's all we need, never need sync(). I'm not sure why an isync() was used in fetch_and_add, but since that's a read-modify-write, I just changed it to have lwsync() on both sides.
-
由 Behdad Esfahbod 提交于
Since add_int and cas are both read-modify-write, I wonder if we also need a barrier after them.
-
由 Behdad Esfahbod 提交于
Originally, glib's atomic_get was implemented as "memory_barrier; load". I copied this into cairo, fontconfig, and harfbuzz. However, that's wrong. Correct way is "load; memory_barrier". The details are long and hard to fully grasp. Best to read: https://www.kernel.org/doc/Documentation/memory-barriers.txt Also see my report against GNOME: https://gitlab.gnome.org/GNOME/glib/issues/1449 Note that this is irrelevant if C++11-like atomic ops are available.
-
由 Behdad Esfahbod 提交于
-
由 Behdad Esfahbod 提交于
To help TSan and be more "correct".
-
由 Behdad Esfahbod 提交于
Although, all implementations just elevate that to ACQUIRE. But requirement for us is just CONSUME.
-
由 Behdad Esfahbod 提交于
This reverts commit b1e5650c. After lots of head-scratching and finally finding the only truly readable source to be the good old: https://www.kernel.org/doc/Documentation/memory-barriers.txt I've convinced myself that we need consume memory-ordering on get(). The location of memory-barrier in a load should be after, not before the load. That needs fixing. I'll do that separately.
-
- 31 7月, 2018 1 次提交
-
-
由 Behdad Esfahbod 提交于
We only use it before cmpexch, so relaxed is fine and faster for common case.
-
- 17 7月, 2018 2 次提交
-
-
由 Behdad Esfahbod 提交于
Fixed the crasher in it.
-
由 Behdad Esfahbod 提交于
This reverts commit 21fa170f. Is crashing. Oops.
-
- 16 7月, 2018 3 次提交
-
-
由 Behdad Esfahbod 提交于
Hopefully fixes bots.
-
由 Behdad Esfahbod 提交于
-
-
- 01 6月, 2018 1 次提交
-
-
由 Behdad Esfahbod 提交于
-
- 04 1月, 2018 1 次提交
-
-
由 Bruce Mitchener 提交于
In macOS 10.12, the `OSMemoryBarrier` and related APIs were deprecated in favor of using `std::atomic`. On the way to supporting `std::atomic`, we can favor using the "Intel primitives" which are also available on macOS.
-
- 27 10月, 2017 1 次提交
-
-
- 17 5月, 2017 1 次提交
-
-
由 Behdad Esfahbod 提交于
-
- 11 12月, 2015 1 次提交
-
-
由 Behdad Esfahbod 提交于
-
- 10 12月, 2015 1 次提交
-
-
由 Behdad Esfahbod 提交于
Patch from Volker Simonis.
-
- 10 4月, 2015 1 次提交
-
-
由 Behdad Esfahbod 提交于
-
- 09 4月, 2015 2 次提交
-
-
由 Behdad Esfahbod 提交于
-
由 Konstantin Ritt 提交于
s/atomic_int/atomic_int_impl/ and s/atomic_ptr/atomic_ptr_impl/ to bring it in par with hb_mutex_impl_t, then re-introduce hb_atomic_int_t as a wrapper around hb_atomic_int_impl_t. In hb_reference_count_t, make it clear the non-atomic get and set are intentional due to nature of the cases they are used in (comparison to -1 and the debug output/tracing).
-