mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 02:35:41 +00:00
e52769e834
We have been using a different zone allocator between mozjemalloc and replace-malloc for a long time. Jemalloc 4 uses the same as replace-malloc, albeit as part of the jemalloc upstream code base. We've been bitten many times in the past with Apple changes breaking the zone allocator, and each time we've had to make changes to the three instances, although two of them are similar and the changes there are straightforward. It also turns out that the way the mozjemalloc zone allocator is set up, when a new version of OSX appears with a new version of the system zone allocator, Firefox ends up using the system allocator, because the zone allocator version is not supported. So, we use the same zone allocator for both replace-malloc and mozjemalloc, making everything on par with jemalloc 4. --HG-- extra : rebase_source : 9c0e245b5f82bb71294370d607e690c05cc89fbc
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
EXPORTS += [
|
|
'mozmemory.h',
|
|
'mozmemory_wrap.h',
|
|
]
|
|
|
|
LIBRARY_DEFINES['MOZ_HAS_MOZGLUE'] = True
|
|
DEFINES['MOZ_MEMORY_IMPL'] = True
|
|
|
|
if CONFIG['MOZ_REPLACE_MALLOC']:
|
|
EXPORTS += [
|
|
'malloc_decls.h',
|
|
'replace_malloc.h',
|
|
'replace_malloc_bridge.h',
|
|
]
|
|
|
|
SOURCES += [
|
|
'jemalloc_config.cpp',
|
|
'mozmemory_wrap.c',
|
|
]
|
|
|
|
if CONFIG['MOZ_JEMALLOC4']:
|
|
SOURCES += [
|
|
'mozjemalloc_compat.c',
|
|
]
|
|
LOCAL_INCLUDES += ['!../jemalloc/src/include']
|
|
if CONFIG['_MSC_VER']:
|
|
LOCAL_INCLUDES += ['/memory/jemalloc/src/include/msvc_compat']
|
|
if not CONFIG['HAVE_INTTYPES_H']:
|
|
LOCAL_INCLUDES += ['/memory/jemalloc/src/include/msvc_compat/C99']
|
|
|
|
if CONFIG['MOZ_REPLACE_MALLOC']:
|
|
SOURCES += [
|
|
'replace_malloc.c',
|
|
]
|
|
|
|
if CONFIG['OS_TARGET'] == 'Darwin' and (CONFIG['MOZ_REPLACE_MALLOC'] or
|
|
CONFIG['MOZ_MEMORY'] and not CONFIG['MOZ_JEMALLOC4']):
|
|
SOURCES += [
|
|
'zone.c',
|
|
]
|
|
|
|
Library('memory')
|
|
|
|
if CONFIG['MOZ_GLUE_IN_PROGRAM']:
|
|
SDK_LIBRARY = True
|
|
DIST_INSTALL = True
|
|
|
|
# Keep jemalloc separated when mozglue is statically linked
|
|
if CONFIG['MOZ_MEMORY'] and (CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') or
|
|
CONFIG['MOZ_SYSTEM_JEMALLOC']):
|
|
FINAL_LIBRARY = 'mozglue'
|
|
|
|
if CONFIG['MOZ_REPLACE_MALLOC'] and CONFIG['OS_TARGET'] == 'Darwin':
|
|
# The zone allocator for OSX needs some jemalloc internal functions
|
|
LOCAL_INCLUDES += ['/memory/jemalloc/src/include']
|