Bug 1520393 - Use proper defaults for --enable-jemalloc and --enable-replace-malloc. r=nalexander
☠☠ backed out by 364d2be12e37 ☠ ☠
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 17 Jan 2019 06:49:10 +0000
changeset 511343 263e45bdcd59a06a69caa935a5e8ab8d2dd2a1d1
parent 511342 b7bc38b0f9c5614fb4fd5edf7e4686c9b3b0d179
child 511344 364d2be12e37dad192b71f732720f815c3313b32
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)
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)