blob: 3e025431a32f7cb514571818c7e50ab2c8e90aed [file] [log] [blame]
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/atomic_flag.h"
#include "base/dynamic_annotations.h"
#include "base/logging.h"
namespace base {
void AtomicFlag::Set() {
DCHECK(!flag_);
// Set() method can't be called if the flag has already been set.
ANNOTATE_HAPPENS_BEFORE(&flag_);
base::subtle::Release_Store(&flag_, 1);
}
bool AtomicFlag::IsSet() const {
bool ret = base::subtle::Acquire_Load(&flag_) != 0;
if (ret) {
ANNOTATE_HAPPENS_AFTER(&flag_);
}
return ret;
}
} // namespace base