| Index: tools/bisect-perf-regression.py
|
| diff --git a/tools/bisect-perf-regression.py b/tools/bisect-perf-regression.py
|
| index 0fcaf2ef24a43ec9ba04225f41266fa123a54b88..13155bc3f0a5559387174994c2876c387ef6cba5 100755
|
| --- a/tools/bisect-perf-regression.py
|
| +++ b/tools/bisect-perf-regression.py
|
| @@ -80,7 +80,8 @@ DEPOT_DEPS_NAME = {
|
| "recurse" : True,
|
| "depends" : None,
|
| "build_with": 'v8_bleeding_edge',
|
| - "from" : 'chromium'
|
| + "from" : 'chromium',
|
| + "custom_deps": bisect_utils.GCLIENT_CUSTOM_DEPS_V8
|
| },
|
| 'v8_bleeding_edge' : {
|
| "src" : "src/v8_bleeding_edge",
|
| @@ -1326,7 +1327,9 @@ class BisectPerformanceMetrics(object):
|
| def PrepareToBisectOnDepot(self,
|
| current_depot,
|
| end_revision,
|
| - start_revision):
|
| + start_revision,
|
| + previous_depot,
|
| + previous_revision):
|
| """Changes to the appropriate directory and gathers a list of revisions
|
| to bisect between |start_revision| and |end_revision|.
|
|
|
| @@ -1334,6 +1337,8 @@ class BisectPerformanceMetrics(object):
|
| current_depot: The depot we want to bisect.
|
| end_revision: End of the revision range.
|
| start_revision: Start of the revision range.
|
| + previous_depot: The depot we were previously bisecting.
|
| + previous_revision: The last revision we synced to on |previous_depot|.
|
|
|
| Returns:
|
| A list containing the revisions between |start_revision| and
|
| @@ -1347,6 +1352,16 @@ class BisectPerformanceMetrics(object):
|
| # V8 (and possibly others) is merged in periodically. Bisecting
|
| # this directory directly won't give much good info.
|
| if DEPOT_DEPS_NAME[current_depot].has_key('build_with'):
|
| + if (DEPOT_DEPS_NAME[current_depot].has_key('custom_deps') and
|
| + previous_depot == 'chromium'):
|
| + config_path = os.path.join(self.src_cwd, '..')
|
| + if bisect_utils.RunGClientAndCreateConfig(self.opts,
|
| + DEPOT_DEPS_NAME[current_depot]['custom_deps'], cwd=config_path):
|
| + return []
|
| + if bisect_utils.RunGClient(
|
| + ['sync', '--revision', previous_revision], cwd=self.src_cwd):
|
| + return []
|
| +
|
| new_depot = DEPOT_DEPS_NAME[current_depot]['build_with']
|
|
|
| svn_start_revision = self.source_control.SVNFindRev(start_revision)
|
| @@ -1651,6 +1666,8 @@ class BisectPerformanceMetrics(object):
|
| good_revision_data['passed'] = 1
|
| good_revision_data['value'] = known_good_value
|
|
|
| + next_revision_depot = target_depot
|
| +
|
| while True:
|
| if not revision_list:
|
| break
|
| @@ -1676,7 +1693,6 @@ class BisectPerformanceMetrics(object):
|
| if min_revision_data['external'][current_depot] !=\
|
| max_revision_data['external'][current_depot]:
|
| external_depot = current_depot
|
| -
|
| break
|
|
|
| # If there was no change in any of the external depots, the search
|
| @@ -1684,12 +1700,16 @@ class BisectPerformanceMetrics(object):
|
| if not external_depot:
|
| break
|
|
|
| - earliest_revision = max_revision_data['external'][current_depot]
|
| - latest_revision = min_revision_data['external'][current_depot]
|
| + previous_revision = revision_list[min_revision]
|
| +
|
| + earliest_revision = max_revision_data['external'][external_depot]
|
| + latest_revision = min_revision_data['external'][external_depot]
|
|
|
| new_revision_list = self.PrepareToBisectOnDepot(external_depot,
|
| latest_revision,
|
| - earliest_revision)
|
| + earliest_revision,
|
| + next_revision_depot,
|
| + previous_revision)
|
|
|
| if not new_revision_list:
|
| results['error'] = 'An error occurred attempting to retrieve'\
|
| @@ -1710,7 +1730,7 @@ class BisectPerformanceMetrics(object):
|
| sort_key_ids += len(revision_list)
|
|
|
| print 'Regression in metric:%s appears to be the result of changes'\
|
| - ' in [%s].' % (metric, current_depot)
|
| + ' in [%s].' % (metric, external_depot)
|
|
|
| self.PrintRevisionsToBisectMessage(revision_list, external_depot)
|
|
|
|
|