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

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: Address Chris' comments. 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);
Alexei Svitkine (slow) 2016/05/04 15:01:45 Does this compile? I believe you need to add a fri
Sigurður Ásgeirsson 2016/05/04 15:56:10 Done.
1232 }
1233
1234 void SetupSyzyASAN() {
1235 typedef VOID(WINAPI* SyzyASANExperimentCallbackFn(const char* name,
1236 const char* group));
1237 typedef VOID(WINAPI* SyzyASANEnumFeaturesFn)(SyzyASANExperimentCallbackFn);
1238 HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll");
1239 if (!syzyasan_handle)
1240 return;
1241
1242 // Export the SyzyASAN experiments as synthetic field trials.
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 }
1267 #endif // SYZYASAN
1268
1269 } // namespace
1270
1227 void ChromeBrowserMainParts::PreBrowserStart() { 1271 void ChromeBrowserMainParts::PreBrowserStart() {
1228 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); 1272 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart");
1229 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) 1273 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
1230 chrome_extra_parts_[i]->PreBrowserStart(); 1274 chrome_extra_parts_[i]->PreBrowserStart();
1231 1275
1232 three_d_observer_.reset(new ThreeDAPIObserver()); 1276 three_d_observer_.reset(new ThreeDAPIObserver());
1233 1277
1234 #if defined(SYZYASAN) 1278 #if defined(SYZYASAN)
1235 // Enable the deferred free mechanism in the syzyasan module, which helps the 1279 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 1280 #endif
1255 1281
1256 // Start the tab manager here so that we give the most amount of time for the 1282 // 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. 1283 // other services to start up before we start adjusting the oom priority.
1258 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) 1284 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
1259 g_browser_process->GetTabManager()->Start(); 1285 g_browser_process->GetTabManager()->Start();
1260 #endif 1286 #endif
1261 } 1287 }
1262 1288
1263 void ChromeBrowserMainParts::PostBrowserStart() { 1289 void ChromeBrowserMainParts::PostBrowserStart() {
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 chromeos::CrosSettings::Shutdown(); 1978 chromeos::CrosSettings::Shutdown();
1953 #endif // defined(OS_CHROMEOS) 1979 #endif // defined(OS_CHROMEOS)
1954 #endif // defined(OS_ANDROID) 1980 #endif // defined(OS_ANDROID)
1955 } 1981 }
1956 1982
1957 // Public members: 1983 // Public members:
1958 1984
1959 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { 1985 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) {
1960 chrome_extra_parts_.push_back(parts); 1986 chrome_extra_parts_.push_back(parts);
1961 } 1987 }
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