Fix MAP_JIT issues on Mac. Patch by Carlo Arenas.
This commit is contained in:
parent
ed63958dad
commit
5bec7dd3b0
|
@ -96,32 +96,31 @@ static SLJIT_INLINE void free_chunk(void *chunk, sljit_uw size)
|
||||||
|
|
||||||
#ifdef MAP_JIT
|
#ifdef MAP_JIT
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
static SLJIT_INLINE int get_map_jit_flag()
|
static SLJIT_INLINE int get_map_jit_flag()
|
||||||
{
|
{
|
||||||
#ifdef TARGET_OS_MAC
|
#ifdef __APPLE__
|
||||||
/* On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a version
|
/* 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
|
of macOS where it's OK to have more than one JIT block. On non-macOS systems, returns
|
||||||
MAP_JIT if it is defined. */
|
MAP_JIT if it is defined. */
|
||||||
|
static int map_jit_flag = -1;
|
||||||
|
|
||||||
static dispatch_once_t _inited;
|
if (map_jit_flag == -1) {
|
||||||
static int map_jit_flag;
|
|
||||||
|
|
||||||
dispatch_once(&_inited,
|
|
||||||
^() {
|
|
||||||
struct utsname name;
|
struct utsname name;
|
||||||
|
|
||||||
uname(&name);
|
uname(&name);
|
||||||
|
|
||||||
/* Kernel version for 10.14.0 (Mojave) */
|
/* Kernel version for 10.14.0 (Mojave) */
|
||||||
if (atoi(name.release) >= 18)
|
map_jit_flag = (atoi(name.release) >= 18) ? MAP_JIT : 0;
|
||||||
map_jit_flag = MAP_JIT;
|
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
|
||||||
return map_jit_flag;
|
return map_jit_flag;
|
||||||
#else /* !TARGET_OS_MAC */
|
#else /* !__APPLE__ */
|
||||||
return MAP_JIT;
|
return MAP_JIT;
|
||||||
#endif /* TARGET_OS_MAC */
|
#endif /* __APPLE__ */
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* MAP_JIT */
|
#endif /* MAP_JIT */
|
||||||
|
|
Loading…
Reference in New Issue