Bug 1325450 - Allow any number of other bundles to be evicted when allocating a minimal bundle, r=sunfish.
authorBrian Hackett <bhackett1024@gmail.com>
Wed, 18 Jan 2017 08:39:28 -0700
changeset 374961 43400d03b8dfd4ac2a8dc9232f715d28ee7054f3
parent 374960 b8cf89eff546edd53a31b54b45c8947693e9d4bb
child 374962 f66492db122a083a4a1c5ec6aa95865d82a70e1d
push id6996
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 20:48:21 +0000
treeherdermozilla-beta@d89512dab048 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssunfish
bugs1325450
milestone53.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 1325450 - Allow any number of other bundles to be evicted when allocating a minimal bundle, r=sunfish.
js/src/jit/BacktrackingAllocator.cpp
--- a/js/src/jit/BacktrackingAllocator.cpp
+++ b/js/src/jit/BacktrackingAllocator.cpp
@@ -1295,17 +1295,17 @@ BacktrackingAllocator::processBundle(MIR
             }
 
             // If that worked, we're done!
             if (success)
                 return true;
 
             // If that didn't work, but we have one or more non-fixed bundles
             // known to be conflicting, maybe we can evict them and try again.
-            if (attempt < MAX_ATTEMPTS &&
+            if ((attempt < MAX_ATTEMPTS || minimalBundle(bundle)) &&
                 !fixed &&
                 !conflicting.empty() &&
                 maximumSpillWeight(conflicting) < computeSpillWeight(bundle))
                 {
                     for (size_t i = 0; i < conflicting.length(); i++) {
                         if (!evictBundle(conflicting[i]))
                             return false;
                     }