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 514175 9a00f3b44547
parent 514174 e96f2ef97459
child 514176 f611bc50d11c
push id1953
push userffxbld-merge
push dateMon, 11 Mar 2019 12:10:20 +0000
treeherdermozilla-release@9c35dcbaa899 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnalexander
bugs1520393, 1322025
milestone66.0a1
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
build/moz.configure/memory.configure
--- 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/.
 
 
 @deprecated_option(env='MOZ_JEMALLOC4')
 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)
+@depends(target)
+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.
-@depends(jemalloc)
-def jemalloc_for_old_configure(jemalloc):
-    return '--%s-jemalloc' % ('enable' if jemalloc else 'disable')
-
-
-add_old_configure_arg(jemalloc_for_old_configure)
+js_option('--enable-jemalloc', env='MOZ_MEMORY', default=jemalloc_default,
+          help='{Replace|Do not replace} memory allocator with jemalloc')
 
 
-option('--enable-replace-malloc',
-       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)