| Index: tools/perf/measurements/page_cycler.py
|
| diff --git a/tools/perf/measurements/page_cycler.py b/tools/perf/measurements/page_cycler.py
|
| index 9e18706823e6d6100c21c01d41ed80c0cffcfdca..2e4e39c5a4a8aff429d33035f3cd37ed080d8458 100644
|
| --- a/tools/perf/measurements/page_cycler.py
|
| +++ b/tools/perf/measurements/page_cycler.py
|
| @@ -21,6 +21,7 @@ import sys
|
|
|
| from metrics import io
|
| from metrics import memory
|
| +from metrics import v8_object_stats
|
| from telemetry.core import util
|
| from telemetry.page import page_measurement
|
|
|
| @@ -32,7 +33,10 @@ class PageCycler(page_measurement.PageMeasurement):
|
| 'page_cycler.js'), 'r') as f:
|
| self._page_cycler_js = f.read()
|
|
|
| + self._record_v8_object_stats = False
|
| +
|
| self._memory_metric = None
|
| + self._v8_object_stats_metric = None
|
| self._number_warm_runs = None
|
| self._cold_runs_requested = False
|
| self._has_loaded_page = collections.defaultdict(int)
|
| @@ -46,12 +50,19 @@ class PageCycler(page_measurement.PageMeasurement):
|
| parser.remove_option('--pageset-repeat')
|
| parser.add_option(pageset_repeat_option)
|
|
|
| + parser.add_option('--v8-object-stats',
|
| + action='store_true',
|
| + help='Enable detailed V8 object statistics.')
|
| +
|
| parser.add_option('--cold-load-percent', type='int', default=0,
|
| help='%d of page visits for which a cold load is forced')
|
|
|
| +
|
| def DidStartBrowser(self, browser):
|
| """Initialize metrics once right after the browser has been launched."""
|
| self._memory_metric = memory.MemoryMetric(browser)
|
| + if self._record_v8_object_stats:
|
| + self._v8_object_stats_metric = v8_object_stats.V8ObjectStatsMetric()
|
|
|
| def DidStartHTTPServer(self, tab):
|
| # Avoid paying for a cross-renderer navigation on the first page on legacy
|
| @@ -65,12 +76,18 @@ class PageCycler(page_measurement.PageMeasurement):
|
|
|
| def DidNavigateToPage(self, page, tab):
|
| self._memory_metric.Start(page, tab)
|
| + if self._record_v8_object_stats:
|
| + self._v8_object_stats_metric.Start(page, tab)
|
|
|
| def CustomizeBrowserOptions(self, options):
|
| memory.MemoryMetric.CustomizeBrowserOptions(options)
|
| io.IOMetric.CustomizeBrowserOptions(options)
|
| options.AppendExtraBrowserArg('--js-flags=--expose_gc')
|
|
|
| + if options.v8_object_stats:
|
| + self._record_v8_object_stats = True
|
| + v8_object_stats.V8ObjectStatsMetric.CustomizeBrowserOptions(options)
|
| +
|
| # A disk cache bug causes some page cyclers to hang on mac.
|
| # TODO(tonyg): Re-enable these tests when crbug.com/268646 is fixed.
|
| if (sys.platform == 'darwin' and
|
| @@ -121,6 +138,9 @@ class PageCycler(page_measurement.PageMeasurement):
|
|
|
| self._memory_metric.Stop(page, tab)
|
| self._memory_metric.AddResults(tab, results)
|
| + if self._record_v8_object_stats:
|
| + self._v8_object_stats_metric.Stop(page, tab)
|
| + self._v8_object_stats_metric.AddResults(tab, results)
|
|
|
| def DidRunTest(self, tab, results):
|
| self._memory_metric.AddSummaryResults(results)
|
|
|