summaryrefslogtreecommitdiff
blob: 26e9373dddfc34e50cca877e667cb1bbd31791c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# HG changeset patch
# User Lars T Hansen <lhansen@mozilla.com>
# Date 1457091735 -3600
# Node ID 69f237c2cf9131e97372debee01931dbacd064e5
# Parent  3aa4483740828617001060fe7386051020521e90
Bug 1253216 - clean up the atomic ops ifdef nest. r=jorendorff

diff --git a/js/src/jit/AtomicOperations.h b/js/src/jit/AtomicOperations.h
--- a/js/src/jit/AtomicOperations.h
+++ b/js/src/jit/AtomicOperations.h
@@ -318,21 +318,29 @@ AtomicOperations::isLockfree(int32_t siz
 } // namespace js
 
 #if defined(JS_CODEGEN_ARM)
 # include "jit/arm/AtomicOperations-arm.h"
 #elif defined(JS_CODEGEN_ARM64)
 # include "jit/arm64/AtomicOperations-arm64.h"
 #elif defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64)
 # include "jit/mips-shared/AtomicOperations-mips-shared.h"
-#elif defined(__ppc64__) || defined(__PPC64_)       \
-    || defined(__ppc64le__) || defined(__PPC64LE__) \
-    || defined(__ppc__) || defined(__PPC__)
+#elif defined(__ppc__) || defined(__PPC__)
 # include "jit/none/AtomicOperations-ppc.h"
 #elif defined(JS_CODEGEN_NONE)
-# include "jit/none/AtomicOperations-none.h"
+  // You can disable the JIT with --disable-ion but you must still
+  // provide the atomic operations that will be used by the JS engine.
+  // When the JIT is disabled the operations are simply safe-for-races
+  // C++ realizations of atomics.  These operations cannot be written
+  // in portable C++, hence the default here is to crash.  See the
+  // top of the file for more guidance.
+# if defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)
+#  include "jit/none/AtomicOperations-ppc.h"
+# else
+#  include "jit/none/AtomicOperations-none.h" // These MOZ_CRASH() always
+# endif
 #elif defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64)
 # include "jit/x86-shared/AtomicOperations-x86-shared.h"
 #else
 # error "Atomic operations must be defined for this platform"
 #endif
 
 #endif // jit_AtomicOperations_h