Skip to content

Commit

Permalink
Use TARGET_OS_MAC macro in the executable allocator.
Browse files Browse the repository at this point in the history
git-svn-id: svn:https://vcs.exim.org/pcre/code/trunk@1744 2f5784b3-3f2a-0410-8824-cb99058d5e15
  • Loading branch information
zherczeg committed Dec 14, 2018
1 parent d1aab86 commit f9f0c6b
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions sljit/sljitExecAllocator.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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 */
Expand Down

0 comments on commit f9f0c6b

Please sign in to comment.