summaryrefslogtreecommitdiff
blob: 691b52862ec2bb289733e53d7d6c5895365aaf08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$OpenBSD: patch-Source_WTF_wtf_Atomics_h,v 1.3 2013/10/20 09:07:57 landry Exp $

https://bugs.webkit.org/show_bug.cgi?id=86835
Fix build failure on sparc64 since 1.8.1, provide atomic{In,De}crement implems based on __sync_fetch_and_add builtin

--- Source/WTF/wtf/Atomics.h.orig	Sat Aug  3 18:10:38 2013
+++ Source/WTF/wtf/Atomics.h	Sun Oct 20 11:06:14 2013
@@ -112,6 +112,15 @@ inline int atomicDecrement(int volatile* addend) { ret
 inline int64_t atomicIncrement(int64_t volatile* addend) { return __sync_add_and_fetch(addend, 1); }
 inline int64_t atomicDecrement(int64_t volatile* addend) { return __sync_sub_and_fetch(addend, 1); }
 
+#elif COMPILER(GCC) && CPU(SPARC64)
+#define WTF_USE_LOCKFREE_THREADSAFEREFCOUNTED 1
+
+inline int atomicIncrement(int volatile* addend) { return __sync_fetch_and_add(addend, 1) + 1; }
+inline int atomicDecrement(int volatile* addend) { return __sync_fetch_and_add(addend, -1) - 1; }
+
+inline int64_t atomicIncrement(int64_t volatile* addend) { return __sync_fetch_and_add(addend, 1) + 1; }
+inline int64_t atomicDecrement(int64_t volatile* addend) { return __sync_fetch_and_add(addend, -1) - 1; }
+
 #endif
 
 #if OS(WINDOWS)