Bug 1520393 - Use proper defaults for --enable-jemalloc and --enable-replace-malloc. r=nalexander
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 17 Jan 2019 21:52:01 +0000
changeset 514340 d08e4acf1e85
parent 514339 9eb9e58dc4bc
child 514341 bd5f0c60f8a9
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(target)
+def jemalloc_default(target):
+    return target.kernel in ('Darwin', 'Linux', 'WINNT')
+
+
+js_option('--enable-jemalloc', env='MOZ_MEMORY', default=jemalloc_default,
+          help='{Replace|Do not replace} memory allocator with jemalloc')
 
 
-@depends('--enable-jemalloc', target)
-def jemalloc(value, target):
-    if value.origin != 'default':
-        return bool(value) or None
+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')
+
 
-    if target.kernel in ('Darwin', 'Linux', 'WINNT'):
+@depends(milestone, build_project)
+def replace_malloc_default(milestone, build_project):
+    if build_project == 'memory':
+        return True
+    if milestone.is_nightly and build_project != 'js':
         return True
 
 
-set_config('MOZ_MEMORY', jemalloc)
-set_define('MOZ_MEMORY', jemalloc)
-add_old_configure_assignment('MOZ_MEMORY', jemalloc)
-
-
-# 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)
-
-
-option('--enable-replace-malloc',
-       help='Enable ability to dynamically replace the malloc implementation')
+js_option('--enable-replace-malloc', default=replace_malloc_default,
+          when='--enable-jemalloc',
+          help='{Enable|Disable} ability to dynamically replace the malloc implementation')
 
 
-@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
-    if build_project == 'memory':
-        return True
-    if milestone.is_nightly and jemalloc and build_project != 'js':
-        return True
+set_config('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')
+set_define('MOZ_REPLACE_MALLOC', True, when='--enable-replace-malloc')
 
 
-set_config('MOZ_REPLACE_MALLOC', replace_malloc)
-set_define('MOZ_REPLACE_MALLOC', replace_malloc)
-
-
-@depends(replace_malloc, build_project)
-def replace_malloc_static(replace_malloc, build_project):
+@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)