Use TARGET_OS_MAC macro in the executable allocator.

This commit is contained in:
Zoltán Herczeg 2018-12-14 08:00:49 +00:00
parent 5bec7dd3b0
commit 5ca7ac2e8e
1 changed files with 13 additions and 5 deletions

View File

@ -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 */