Bug 1520393 - Use proper defaults for --enable-jemalloc and --enable-replace-malloc. r=nalexander
☠☠ backed out by b88b9b479e63 ☠ ☠
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 16 Jan 2019 20:25:21 +0000
changeset 511293 9a00f3b44547afcdec22dc3d5bfe93e41c4ee843
parent 511292 e96f2ef974594bd4302b3d2d4cc00822ca2cca3e
child 511294 f611bc50d11cae1f48cc44d1468f2c34ec46e287
push id10547
push userffxbld-merge
push dateMon, 21 Jan 2019 13:03:58 +0000
treeherdermozilla-beta@24ec1916bffe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1520393, 1322025
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1520393 - Use proper defaults for --enable-jemalloc and --enable-replace-malloc. r=nalexander Back when those were added, option defaults could not indirectly depend on `target` or `host`, but that changed with bug 1322025. As a side effect, this allows to turn them into straight js_options without resorting to the manual add_old_configure_arg. Differential Revision: https://phabricator.services.mozilla.com/D16664
--- a/build/moz.configure/memory.configure
+++ b/build/moz.configure/memory.configure
@@ -5,67 +5,48 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 def moz_jemalloc4(value):
     die('MOZ_JEMALLOC4 is deprecated')
-option('--enable-jemalloc', env='MOZ_MEMORY',
-       help='Replace memory allocator with jemalloc')
-@depends('--enable-jemalloc', target)
-def jemalloc(value, target):
-    if value.origin != 'default':
-        return bool(value) or None
-    if target.kernel in ('Darwin', 'Linux', 'WINNT'):
-        return True
-set_config('MOZ_MEMORY', jemalloc)
-set_define('MOZ_MEMORY', jemalloc)
-add_old_configure_assignment('MOZ_MEMORY', jemalloc)
+def jemalloc_default(target):
+    return target.kernel in ('Darwin', 'Linux', 'WINNT')
-# Because --enable-jemalloc doesn't use a default because of the dependency
-# on the target, we can't use a js_option for it to propagate to js/src
-# through the old-configure.
-def jemalloc_for_old_configure(jemalloc):
-    return '--%s-jemalloc' % ('enable' if jemalloc else 'disable')
+js_option('--enable-jemalloc', env='MOZ_MEMORY', default=jemalloc_default,
+          help='{Replace|Do not replace} memory allocator with jemalloc')
-       help='Enable ability to dynamically replace the malloc implementation')
+set_config('MOZ_MEMORY', True, when='--enable-jemalloc')
+set_define('MOZ_MEMORY', True, when='--enable-jemalloc')
+add_old_configure_assignment('MOZ_MEMORY', True, when='--enable-jemalloc')
-@depends('--enable-replace-malloc', jemalloc, milestone, build_project)
-def replace_malloc(value, jemalloc, milestone, build_project):
-    # Enable on central for the debugging opportunities it adds.
-    if value and not jemalloc:
-        die('--enable-replace-malloc requires --enable-jemalloc')
-    if value.origin != 'default':
-        return bool(value) or None
+@depends('--enable-jemalloc', milestone, build_project)
+def replace_malloc_default(jemalloc, milestone, build_project):
     if build_project == 'memory':
         return True
     if milestone.is_nightly and jemalloc and build_project != 'js':
         return True
-set_config('MOZ_REPLACE_MALLOC', replace_malloc)
-set_define('MOZ_REPLACE_MALLOC', replace_malloc)
+js_option('--enable-replace-malloc', default=replace_malloc_default,
+          when='--enable-jemalloc',
+          help='{Enable|Disable} ability to dynamically replace the malloc implementation')
-@depends(replace_malloc, build_project)
-def replace_malloc_static(replace_malloc, build_project):
+set_config('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')
+set_define('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')
+@depends(build_project, when='--enable-replace-malloc')
+def replace_malloc_static(build_project):
     # Default to statically linking replace-malloc libraries that can be
     # statically linked, except when building with --enable-project=memory.
-    if replace_malloc and build_project != 'memory':
+    if build_project != 'memory':
         return True
 set_config('MOZ_REPLACE_MALLOC_STATIC', replace_malloc_static)