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

Unified Diff: base/metrics/field_trial.cc

Issue 2570473003: NoBarrier_Load()/NoBarrier_Store() for manipulating activated field. (Closed)
Patch Set: Address comments. Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/metrics/field_trial.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/metrics/field_trial.cc
diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
index aed51bf839c41dacfca96c85bd0785c26fa73e6d..454cee127f027a4fc765aabddddce925acc59d0f 100644
--- a/base/metrics/field_trial.cc
+++ b/base/metrics/field_trial.cc
@@ -726,7 +726,7 @@ void FieldTrialList::GetInitiallyActiveFieldTrials(
StringPiece trial_name;
StringPiece group_name;
- if (entry->activated &&
+ if (subtle::NoBarrier_Load(&entry->activated) &&
entry->GetTrialAndGroupName(&trial_name, &group_name)) {
FieldTrial::ActiveGroup group;
group.trial_name = trial_name.as_string();
@@ -1083,7 +1083,8 @@ void FieldTrialList::ClearParamsFromSharedMemoryForTesting() {
FieldTrial::FieldTrialEntry* new_entry =
allocator->GetAsObject<FieldTrial::FieldTrialEntry>(new_ref,
kFieldTrialType);
- new_entry->activated = prev_entry->activated;
+ subtle::NoBarrier_Store(&new_entry->activated,
+ subtle::NoBarrier_Load(&prev_entry->activated));
new_entry->pickle_size = pickle.size();
// TODO(lawrencewu): Modify base::Pickle to be able to write over a section
@@ -1186,7 +1187,7 @@ bool FieldTrialList::CreateTrialsFromSharedMemory(
CreateFieldTrial(trial_name.as_string(), group_name.as_string());
trial->ref_ = ref;
- if (entry->activated) {
+ if (subtle::NoBarrier_Load(&entry->activated)) {
// Call |group()| to mark the trial as "used" and notify observers, if
// any. This is useful to ensure that field trials created in child
// processes are properly reported in crash reports.
@@ -1278,7 +1279,7 @@ void FieldTrialList::AddToAllocatorWhileLocked(
FieldTrial::FieldTrialEntry* entry =
allocator->GetAsObject<FieldTrial::FieldTrialEntry>(ref, kFieldTrialType);
- entry->activated = trial_state.activated;
+ subtle::NoBarrier_Store(&entry->activated, trial_state.activated);
entry->pickle_size = pickle.size();
// TODO(lawrencewu): Modify base::Pickle to be able to write over a section in
@@ -1313,7 +1314,7 @@ void FieldTrialList::ActivateFieldTrialEntryWhileLocked(
FieldTrial::FieldTrialEntry* entry =
allocator->GetAsObject<FieldTrial::FieldTrialEntry>(ref,
kFieldTrialType);
- entry->activated = true;
+ subtle::NoBarrier_Store(&entry->activated, 1);
}
}
« no previous file with comments | « base/metrics/field_trial.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698