summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>2018-12-14 08:00:49 +0000
committerzherczeg <zherczeg@6239d852-aaf2-0410-a92c-79f79f948069>2018-12-14 08:00:49 +0000
commitb3afecacc9b78e0e7ef52008bbee937adbf7f45d (patch)
treef4664d031a60dde5ca3472ccb9877a1ad02ef87d
parent52a3eeaeb16e628b6e29a8ee31078a1ccad13b13 (diff)
downloadpcre2-b3afecacc9b78e0e7ef52008bbee937adbf7f45d.tar.gz
Use TARGET_OS_MAC macro in the executable allocator.
git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@1054 6239d852-aaf2-0410-a92c-79f79f948069
-rw-r--r--src/sljit/sljitExecAllocator.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/sljit/sljitExecAllocator.c b/src/sljit/sljitExecAllocator.c
index 6e3b295..7a97114 100644
--- a/src/sljit/sljitExecAllocator.c
+++ b/src/sljit/sljitExecAllocator.c
@@ -94,20 +94,28 @@ static SLJIT_INLINE void free_chunk(void *chunk, sljit_uw size)
#else
-#ifdef MAP_JIT
-
#ifdef __APPLE__
+// Configures TARGET_OS_MAC when appropriate.
+#include <TargetConditionals.h>
+
+#if defined TARGET_OS_MAC && defined MAP_JIT
#include <sys/utsname.h>
+#endif /* TARGET_OS_MAC && MAP_JIT */
#endif /* __APPLE__ */
+#ifdef MAP_JIT
+
static SLJIT_INLINE int get_map_jit_flag()
{
-#ifdef __APPLE__
+#ifdef TARGET_OS_MAC
/* On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a version
of macOS where it's OK to have more than one JIT block. On non-macOS systems, returns
MAP_JIT if it is defined. */
static int map_jit_flag = -1;
+ /* The following code is thread safe because multiple initialization
+ sets map_jit_flag to the same value and the code has no side-effects.
+ Changing the kernel version witout system restart is (very) unlikely. */
if (map_jit_flag == -1) {
struct utsname name;
@@ -118,9 +126,9 @@ static SLJIT_INLINE int get_map_jit_flag()
}
return map_jit_flag;
-#else /* !__APPLE__ */
+#else /* !TARGET_OS_MAC */
return MAP_JIT;
-#endif /* __APPLE__ */
+#endif /* TARGET_OS_MAC */
}
#endif /* MAP_JIT */