diff options
author | Sverker Eriksson <[email protected]> | 2016-04-12 20:41:58 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-04-15 19:02:49 +0200 |
commit | 85a6623152988c267cea008d20616b61ea9c223c (patch) | |
tree | c83b93cb1ca5e3f396c62bd4cb7f723d97c9221e /erts/emulator/sys/common/erl_mseg.c | |
parent | 90641d82a4b07e6b0be142d07ac85107b8ebee9d (diff) | |
download | otp-85a6623152988c267cea008d20616b61ea9c223c.tar.gz otp-85a6623152988c267cea008d20616b61ea9c223c.tar.bz2 otp-85a6623152988c267cea008d20616b61ea9c223c.zip |
erts: Add 'exec_alloc' for hipe code
that uses its own super carrier (erts_exec_mmapper)
to guarantee low addressed and executable memory (PROT_EXEC).
Currently only used on x86_64 that needs low memory
for HiPE/AMD64's small code model.
By initializing erts_exec_mapper early we secure
its low memory area before erts_literal_mmapper might
steal it.
Diffstat (limited to 'erts/emulator/sys/common/erl_mseg.c')
-rw-r--r-- | erts/emulator/sys/common/erl_mseg.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/sys/common/erl_mseg.c b/erts/emulator/sys/common/erl_mseg.c index f0fbb682b0..f373302e65 100644 --- a/erts/emulator/sys/common/erl_mseg.c +++ b/erts/emulator/sys/common/erl_mseg.c @@ -31,6 +31,7 @@ # include "config.h" #endif +#define ERTS_WANT_MEM_MAPPERS #include "sys.h" #include "erl_mseg.h" #include "global.h" @@ -1402,6 +1403,12 @@ erts_mseg_init(ErtsMsegInit_t *init) erts_mtx_init(&init_atoms_mutex, "mseg_init_atoms"); +#ifdef ERTS_ALC_A_EXEC + /* Initialize erts_exec_mapper *FIRST*, to increase probability + * of getting low memory for HiPE AMD64's small code model. + */ + erts_mmap_init(&erts_exec_mmapper, &init->exec_mmap, 1); +#endif erts_mmap_init(&erts_dflt_mmapper, &init->dflt_mmap, 0); #if defined(ARCH_64) && defined(ERTS_HAVE_OS_PHYSICAL_MEMORY_RESERVATION) erts_mmap_init(&erts_literal_mmapper, &init->literal_mmap, 0); |