Remove use of synchronization/lock in tools/gn/import_manager
Change-Id: I3d8f4c81db2aec9af16c5b594d849e06e4551b10
Reviewed-on: https://gn-review.googlesource.com/1705
Commit-Queue: Scott Graham <scottmg@chromium.org>
Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/tools/gn/import_manager.cc b/tools/gn/import_manager.cc
index 405eb01..f4aa32a 100644
--- a/tools/gn/import_manager.cc
+++ b/tools/gn/import_manager.cc
@@ -56,7 +56,7 @@
// This lock protects the unique_ptr. Once the scope is computed,
// it is const and can be accessed read-only outside of the lock.
- base::Lock load_lock;
+ std::mutex load_lock;
std::unique_ptr<const Scope> scope;
@@ -82,7 +82,7 @@
// copying outside of the lock.
ImportInfo* import_info = nullptr;
{
- base::AutoLock lock(imports_lock_);
+ std::lock_guard<std::mutex> lock(imports_lock_);
std::unique_ptr<ImportInfo>& info_ptr = imports_[file];
if (!info_ptr)
info_ptr = std::make_unique<ImportInfo>();
@@ -102,7 +102,7 @@
const Scope* import_scope = nullptr;
{
base::TimeTicks import_block_begin = base::TimeTicks::Now();
- base::AutoLock lock(import_info->load_lock);
+ std::lock_guard<std::mutex> lock(import_info->load_lock);
if (!import_info->scope) {
// Only load if the import hasn't already failed.
@@ -140,7 +140,7 @@
options.mark_dest_used = true; // Don't require all imported values be used.
{
- base::AutoLock lock(imports_lock_);
+ std::lock_guard<std::mutex> lock(imports_lock_);
imports_in_progress_.erase(key);
}
diff --git a/tools/gn/import_manager.h b/tools/gn/import_manager.h
index 01d8af6..d72d5a7 100644
--- a/tools/gn/import_manager.h
+++ b/tools/gn/import_manager.h
@@ -7,11 +7,12 @@
#include <map>
#include <memory>
+#include <mutex>
+#include <string>
#include <unordered_set>
#include <vector>
#include "base/macros.h"
-#include "base/synchronization/lock.h"
class Err;
class ParseNode;
@@ -39,7 +40,7 @@
// Protects access to imports_ and imports_in_progress_. Do not hold when
// actually executing imports.
- base::Lock imports_lock_;
+ std::mutex imports_lock_;
// Owning pointers to the scopes.
typedef std::map<SourceFile, std::unique_ptr<ImportInfo>> ImportMap;
diff --git a/tools/gn/scheduler.cc b/tools/gn/scheduler.cc
index 00b5c61..bca1472 100644
--- a/tools/gn/scheduler.cc
+++ b/tools/gn/scheduler.cc
@@ -36,7 +36,7 @@
main_thread_run_loop_->Run();
bool local_is_failed;
{
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
local_is_failed = is_failed();
has_been_shutdown_ = true;
}
@@ -54,7 +54,7 @@
void Scheduler::FailWithError(const Err& err) {
DCHECK(err.has_error());
{
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
if (is_failed_ || has_been_shutdown_)
return; // Ignore errors once we see one.
@@ -81,39 +81,39 @@
}
void Scheduler::AddGenDependency(const base::FilePath& file) {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
gen_dependencies_.push_back(file);
}
std::vector<base::FilePath> Scheduler::GetGenDependencies() const {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
return gen_dependencies_;
}
void Scheduler::AddWrittenFile(const SourceFile& file) {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
written_files_.push_back(file);
}
void Scheduler::AddUnknownGeneratedInput(const Target* target,
const SourceFile& file) {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
unknown_generated_inputs_.insert(std::make_pair(file, target));
}
void Scheduler::AddWriteRuntimeDepsTarget(const Target* target) {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
write_runtime_deps_targets_.push_back(target);
}
std::vector<const Target*> Scheduler::GetWriteRuntimeDepsTargets() const {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
return write_runtime_deps_targets_;
}
bool Scheduler::IsFileGeneratedByWriteRuntimeDeps(
const OutputFile& file) const {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
// Number of targets should be quite small, so brute-force search is fine.
for (const Target* target : write_runtime_deps_targets_) {
if (file == target->write_runtime_deps_output()) {
@@ -125,7 +125,7 @@
std::multimap<SourceFile, const Target*> Scheduler::GetUnknownGeneratedInputs()
const {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
// Remove all unknown inputs that were written files. These are OK as inputs
// to build steps since they were written as a side-effect of running GN.
@@ -140,7 +140,7 @@
}
void Scheduler::ClearUnknownGeneratedInputsAndWrittenFiles() {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
unknown_generated_inputs_.clear();
written_files_.clear();
}
@@ -157,7 +157,7 @@
}
void Scheduler::SuppressOutputForTesting(bool suppress) {
- base::AutoLock lock(lock_);
+ std::lock_guard<std::mutex> lock(lock_);
suppress_output_for_testing_ = suppress;
}
diff --git a/tools/gn/scheduler.h b/tools/gn/scheduler.h
index 1677b4d..f68a25b 100644
--- a/tools/gn/scheduler.h
+++ b/tools/gn/scheduler.h
@@ -125,7 +125,7 @@
WorkerPool worker_pool_;
- mutable base::Lock lock_;
+ mutable std::mutex lock_;
bool is_failed_;
bool suppress_output_for_testing_;