Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: chrome/browser/chrome_browser_main.cc

Issue 1945803002: SyzyASAN: Export experiment state to finch synthetic field trials. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chrome_browser_main.h" 5 #include "chrome/browser/chrome_browser_main.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <set> 10 #include <set>
(...skipping 1206 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 #endif // BUILDFLAG(ANDROID_JAVA_UI) 1217 #endif // BUILDFLAG(ANDROID_JAVA_UI)
1218 1218
1219 LaunchDevToolsHandlerIfNeeded(parsed_command_line()); 1219 LaunchDevToolsHandlerIfNeeded(parsed_command_line());
1220 if (parsed_command_line().HasSwitch(::switches::kAutoOpenDevToolsForTabs)) 1220 if (parsed_command_line().HasSwitch(::switches::kAutoOpenDevToolsForTabs))
1221 g_browser_process->CreateDevToolsAutoOpener(); 1221 g_browser_process->CreateDevToolsAutoOpener();
1222 1222
1223 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 1223 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
1224 chrome_extra_parts_[i]->PostProfileInit(); 1224 chrome_extra_parts_[i]->PostProfileInit();
1225 } 1225 }
1226 1226
1227 namespace {
1228
1229 #if defined(SYZYASAN)
1230 void WINAPI SyzyASANExperimentCallback(const char* name, const char* group) {
1231 ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(name, status);
1232 }
1233
1234 void SetupSyzyASAN() {
1235 typedef VOID(WINAPI* SyzyASANExperimentCallbackFn(const char* name,
1236 const char* group));
1237 typedef VOID(WINAPI* SyzyasanEnumFeaturesFn)(SyzyASANExperimentCallbackFn);
chrisha 2016/05/03 20:56:36 SyzyASAN, for consistency?
Sigurður Ásgeirsson 2016/05/04 13:10:45 Done.
1238 // Export the SyzyASAN experiements as synthetic field trials.
chrisha 2016/05/03 20:56:36 experiments*
Sigurður Ásgeirsson 2016/05/04 13:10:46 Done.
1239 HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll");
1240 if (!syzyasan_handle)
1241 return;
1242
1243 SyzyasanEnumFeaturesFn syzyasan_enum_features =
1244 reinterpret_cast<SyzyasanEnumFeaturesFn>(
1245 ::GetProcAddress("asan_EnumFeatures"));
1246 if (syzyasan_enum_features) {
1247 syzyasan_enum_features(&SyzyASANExperimentCallback);
1248 }
1249
1250 // Enable the deferred free mechanism in the syzyasan module, which helps the
1251 // performance by deferring some work on the critical path to a background
1252 // thread.
1253 if (base::FeatureList::IsEnabled(features::kSyzyasanDeferredFree)) {
1254 typedef VOID(WINAPI * SyzyasanEnableDeferredFreeThreadFunc)(VOID);
1255 bool success = false;
1256 SyzyasanEnableDeferredFreeThreadFunc syzyasan_enable_deferred_free =
1257 reinterpret_cast<SyzyasanEnableDeferredFreeThreadFunc>(
1258 ::GetProcAddress(syzyasan_handle,
1259 "asan_EnableDeferredFreeThread"));
1260 if (syzyasan_enable_deferred_free) {
1261 syzyasan_enable_deferred_free();
1262 success = true;
1263 }
1264 UMA_HISTOGRAM_BOOLEAN("Syzyasan.DeferredFreeWasEnabled", success);
1265 }
1266
chrisha 2016/05/03 20:56:36 ubernit: Remove this blank line?
Sigurður Ásgeirsson 2016/05/04 13:10:45 Done.
1267 }
1268 #endif // SYZYASAN
1269
1270 } // namespace
1271
1227 void ChromeBrowserMainParts::PreBrowserStart() { 1272 void ChromeBrowserMainParts::PreBrowserStart() {
1228 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); 1273 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart");
1229 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 1274 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
1230 chrome_extra_parts_[i]->PreBrowserStart(); 1275 chrome_extra_parts_[i]->PreBrowserStart();
1231 1276
1232 three_d_observer_.reset(new ThreeDAPIObserver()); 1277 three_d_observer_.reset(new ThreeDAPIObserver());
1233 1278
1234 #if defined(SYZYASAN) 1279 #if defined(SYZYASAN)
1235 // Enable the deferred free mechanism in the syzyasan module, which helps the 1280 SetupSyzyASAN();
1236 // performance by deferring some work on the critical path to a background
1237 // thread.
1238 if (base::FeatureList::IsEnabled(features::kSyzyasanDeferredFree)) {
1239 typedef VOID(WINAPI * SyzyasanEnableDeferredFreeThreadFunc)(VOID);
1240 HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll");
1241 bool success = false;
1242 if (syzyasan_handle) {
1243 SyzyasanEnableDeferredFreeThreadFunc syzyasan_enable_deferred_free =
1244 reinterpret_cast<SyzyasanEnableDeferredFreeThreadFunc>(
1245 ::GetProcAddress(syzyasan_handle,
1246 "asan_EnableDeferredFreeThread"));
1247 if (syzyasan_enable_deferred_free) {
1248 syzyasan_enable_deferred_free();
1249 success = true;
1250 }
1251 }
1252 UMA_HISTOGRAM_BOOLEAN("Syzyasan.DeferredFreeWasEnabled", success);
1253 }
1254 #endif 1281 #endif
1255 1282
1256 // Start the tab manager here so that we give the most amount of time for the 1283 // Start the tab manager here so that we give the most amount of time for the
1257 // other services to start up before we start adjusting the oom priority. 1284 // other services to start up before we start adjusting the oom priority.
1258 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) 1285 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
1259 g_browser_process->GetTabManager()->Start(); 1286 g_browser_process->GetTabManager()->Start();
1260 #endif 1287 #endif
1261 } 1288 }
1262 1289
1263 void ChromeBrowserMainParts::PostBrowserStart() { 1290 void ChromeBrowserMainParts::PostBrowserStart() {
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 chromeos::CrosSettings::Shutdown(); 1979 chromeos::CrosSettings::Shutdown();
1953 #endif // defined(OS_CHROMEOS) 1980 #endif // defined(OS_CHROMEOS)
1954 #endif // defined(OS_ANDROID) 1981 #endif // defined(OS_ANDROID)
1955 } 1982 }
1956 1983
1957 // Public members: 1984 // Public members:
1958 1985
1959 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { 1986 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) {
1960 chrome_extra_parts_.push_back(parts); 1987 chrome_extra_parts_.push_back(parts);
1961 } 1988 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698