mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-06 15:58:39 +09:00
MoonchildProductions#1251 - Part 7: All the posix_m* memory-related stuff, gathered together.
https://bugzilla.mozilla.org/show_bug.cgi?id=1158445 https://bugzilla.mozilla.org/show_bug.cgi?id=963983 https://bugzilla.mozilla.org/show_bug.cgi?id=1542758 Solaris madvise and malign don't perfectly map to their POSIX counterparts, and some Linux versions (especially Android) don't define the POSIX counterparts at all, so options are limited. Ideally posix_madvise and posix_malign should be the safer and more portable options for all platforms.
This commit is contained in:
parent
68ee7c2d20
commit
b652dd59ae
6 changed files with 33 additions and 6 deletions
|
|
@ -413,8 +413,8 @@ void *_mmap(void *addr, size_t length, int prot, int flags,
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_MEMORY_SOLARIS && defined(MAP_ALIGN) && !defined(JEMALLOC_NEVER_USES_MAP_ALIGN)
|
||||
#define JEMALLOC_USES_MAP_ALIGN /* Required on Solaris 10. Might improve performance elsewhere. */
|
||||
#if defined(MOZ_MEMORY_SOLARIS) && defined(MAP_ALIGN) && !defined(JEMALLOC_NEVER_USES_MAP_ALIGN)
|
||||
#define JEMALLOC_USES_MAP_ALIGN /* Required on Solaris 10. Might improve performance elsewhere. */
|
||||
#endif
|
||||
|
||||
#ifndef __DECONST
|
||||
|
|
@ -1043,7 +1043,7 @@ static const bool config_recycle = false;
|
|||
* will abort.
|
||||
* Platform specific page size conditions copied from js/public/HeapAPI.h
|
||||
*/
|
||||
#if (defined(__FreeBSD__)) && \
|
||||
#if (defined(SOLARIS) || defined(__FreeBSD__)) && \
|
||||
(defined(__sparc) || defined(__sparcv9) || defined(__ia64))
|
||||
#define pagesize_2pow ((size_t) 13)
|
||||
#elif defined(__powerpc64__)
|
||||
|
|
@ -2651,8 +2651,13 @@ pages_purge(void *addr, size_t length)
|
|||
# define JEMALLOC_MADV_PURGE MADV_FREE
|
||||
# define JEMALLOC_MADV_ZEROS false
|
||||
# endif
|
||||
#ifdef MOZ_MEMORY_SOLARIS
|
||||
int err = posix_madvise(addr, length, JEMALLOC_MADV_PURGE);
|
||||
unzeroed = (JEMALLOC_MADV_ZEROS == false || err != 0);
|
||||
#else
|
||||
int err = madvise(addr, length, JEMALLOC_MADV_PURGE);
|
||||
unzeroed = (JEMALLOC_MADV_ZEROS == false || err != 0);
|
||||
#endif
|
||||
# undef JEMALLOC_MADV_PURGE
|
||||
# undef JEMALLOC_MADV_ZEROS
|
||||
# endif
|
||||
|
|
@ -3608,9 +3613,14 @@ arena_purge(arena_t *arena, bool all)
|
|||
#endif
|
||||
|
||||
#ifndef MALLOC_DECOMMIT
|
||||
#ifdef MOZ_MEMORY_SOLARIS
|
||||
posix_madvise((void*)((uintptr_t)chunk + (i << pagesize_2pow)),
|
||||
(npages << pagesize_2pow),MADV_FREE);
|
||||
#else
|
||||
madvise((void *)((uintptr_t)chunk + (i <<
|
||||
pagesize_2pow)), (npages << pagesize_2pow),
|
||||
MADV_FREE);
|
||||
#endif
|
||||
# ifdef MALLOC_DOUBLE_PURGE
|
||||
madvised = true;
|
||||
# endif
|
||||
|
|
@ -5136,7 +5146,7 @@ malloc_ncpus(void)
|
|||
static inline unsigned
|
||||
malloc_ncpus(void)
|
||||
{
|
||||
return sysconf(_SC_NPROCESSORS_ONLN);
|
||||
return sysconf(_SC_NPROCESSORS_ONLN);
|
||||
}
|
||||
#elif (defined(MOZ_MEMORY_WINDOWS))
|
||||
static inline unsigned
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue