aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2021-03-10 19:58:31 +0100
committerMike Pall <mike>2021-03-10 19:58:31 +0100
commit67dbec82f4f05a416a78a560a726553beaa7a223 (patch)
tree1f67c211230a78621bb204ba7923bf85e6252ed6
parentec6edc5c39c25e4eb3fca51b753f9995e97215da (diff)
downloadluajit-67dbec82f4f05a416a78a560a726553beaa7a223.tar.gz
luajit-67dbec82f4f05a416a78a560a726553beaa7a223.tar.bz2
luajit-67dbec82f4f05a416a78a560a726553beaa7a223.zip
Linux/ARM64: Make mremap() non-moving due to VA space woes.
This reduces overall performance on ARM64, but we have no choice. Linux kernel default userspace VA is 48 bit, but we'd need 47 bit. mremap() ignores address hints due to a kernel API issue. The mapping may move to an undesired address which will cause an assert or crash. Reported by Raymond W. Ko.
Diffstat (limited to '')
-rw-r--r--src/lj_alloc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_alloc.c b/src/lj_alloc.c
index 21fb7af5..165203fa 100644
--- a/src/lj_alloc.c
+++ b/src/lj_alloc.c
@@ -365,7 +365,7 @@ static void *CALL_MREMAP_(void *ptr, size_t osz, size_t nsz, int flags)
365#define CALL_MREMAP(addr, osz, nsz, mv) CALL_MREMAP_((addr), (osz), (nsz), (mv)) 365#define CALL_MREMAP(addr, osz, nsz, mv) CALL_MREMAP_((addr), (osz), (nsz), (mv))
366#define CALL_MREMAP_NOMOVE 0 366#define CALL_MREMAP_NOMOVE 0
367#define CALL_MREMAP_MAYMOVE 1 367#define CALL_MREMAP_MAYMOVE 1
368#if LJ_64 && !LJ_GC64 368#if LJ_64 && (!LJ_GC64 || LJ_TARGET_ARM64)
369#define CALL_MREMAP_MV CALL_MREMAP_NOMOVE 369#define CALL_MREMAP_MV CALL_MREMAP_NOMOVE
370#else 370#else
371#define CALL_MREMAP_MV CALL_MREMAP_MAYMOVE 371#define CALL_MREMAP_MV CALL_MREMAP_MAYMOVE