Index: tools/gn/ninja_binary_target_writer.cc |
diff --git a/tools/gn/ninja_binary_target_writer.cc b/tools/gn/ninja_binary_target_writer.cc |
index c5a7ad16b5a7581e18d4cbc43baf7a47784c4936..a5b858e219caa26f83b6e7f77db574efd27e9e41 100644 |
--- a/tools/gn/ninja_binary_target_writer.cc |
+++ b/tools/gn/ninja_binary_target_writer.cc |
@@ -320,9 +320,9 @@ void NinjaBinaryTargetWriter::WriteLinkCommand( |
<< helper_.GetRulePrefix(target_->settings()) |
<< Toolchain::ToolTypeToName(tool_type_); |
- std::set<OutputFile> extra_object_files; |
- std::vector<const Target*> linkable_deps; |
- std::vector<const Target*> non_linkable_deps; |
+ UniqueVector<OutputFile> extra_object_files; |
+ UniqueVector<const Target*> linkable_deps; |
+ UniqueVector<const Target*> non_linkable_deps; |
GetDeps(&extra_object_files, &linkable_deps, &non_linkable_deps); |
// Object files. |
@@ -330,10 +330,9 @@ void NinjaBinaryTargetWriter::WriteLinkCommand( |
out_ << " "; |
path_output_.WriteFile(out_, object_files[i]); |
} |
- for (std::set<OutputFile>::iterator i = extra_object_files.begin(); |
- i != extra_object_files.end(); ++i) { |
+ for (size_t i = 0; i < extra_object_files.size(); i++) { |
out_ << " "; |
- path_output_.WriteFile(out_, *i); |
+ path_output_.WriteFile(out_, extra_object_files[i]); |
} |
// Libs. |
@@ -360,9 +359,9 @@ void NinjaBinaryTargetWriter::WriteSourceSetStamp( |
<< helper_.GetRulePrefix(target_->settings()) |
<< "stamp"; |
- std::set<OutputFile> extra_object_files; |
- std::vector<const Target*> linkable_deps; |
- std::vector<const Target*> non_linkable_deps; |
+ UniqueVector<OutputFile> extra_object_files; |
+ UniqueVector<const Target*> linkable_deps; |
+ UniqueVector<const Target*> non_linkable_deps; |
GetDeps(&extra_object_files, &linkable_deps, &non_linkable_deps); |
// The classifier should never put extra object files in a source set: |
@@ -382,24 +381,22 @@ void NinjaBinaryTargetWriter::WriteSourceSetStamp( |
} |
void NinjaBinaryTargetWriter::GetDeps( |
- std::set<OutputFile>* extra_object_files, |
- std::vector<const Target*>* linkable_deps, |
- std::vector<const Target*>* non_linkable_deps) const { |
+ UniqueVector<OutputFile>* extra_object_files, |
+ UniqueVector<const Target*>* linkable_deps, |
+ UniqueVector<const Target*>* non_linkable_deps) const { |
const LabelTargetVector& deps = target_->deps(); |
- const std::set<const Target*>& inherited = target_->inherited_libraries(); |
+ const UniqueVector<const Target*>& inherited = |
+ target_->inherited_libraries(); |
// Normal deps. |
for (size_t i = 0; i < deps.size(); i++) { |
- if (inherited.find(deps[i].ptr) != inherited.end()) |
- continue; // Don't add dupes. |
ClassifyDependency(deps[i].ptr, extra_object_files, |
linkable_deps, non_linkable_deps); |
} |
// Inherited libraries. |
- for (std::set<const Target*>::const_iterator i = inherited.begin(); |
- i != inherited.end(); ++i) { |
- ClassifyDependency(*i, extra_object_files, |
+ for (size_t i = 0; i < inherited.size(); i++) { |
+ ClassifyDependency(inherited[i], extra_object_files, |
linkable_deps, non_linkable_deps); |
} |
@@ -411,9 +408,9 @@ void NinjaBinaryTargetWriter::GetDeps( |
void NinjaBinaryTargetWriter::ClassifyDependency( |
const Target* dep, |
- std::set<OutputFile>* extra_object_files, |
- std::vector<const Target*>* linkable_deps, |
- std::vector<const Target*>* non_linkable_deps) const { |
+ UniqueVector<OutputFile>* extra_object_files, |
+ UniqueVector<const Target*>* linkable_deps, |
+ UniqueVector<const Target*>* non_linkable_deps) const { |
// Only these types of outputs have libraries linked into them. Child deps of |
// static libraries get pushed up the dependency tree until one of these is |
// reached, and source sets don't link at all. |
@@ -441,7 +438,7 @@ void NinjaBinaryTargetWriter::ClassifyDependency( |
input_file_type != SOURCE_H) { |
// Note we need to specify the target as the source_set target |
// itself, since this is used to prefix the object file name. |
- extra_object_files->insert(helper_.GetOutputFileForSource( |
+ extra_object_files->push_back(helper_.GetOutputFileForSource( |
dep, dep->sources()[i], input_file_type)); |
} |
} |
@@ -454,7 +451,7 @@ void NinjaBinaryTargetWriter::ClassifyDependency( |
} |
void NinjaBinaryTargetWriter::WriteImplicitDependencies( |
- const std::vector<const Target*>& non_linkable_deps) { |
+ const UniqueVector<const Target*>& non_linkable_deps) { |
const std::vector<SourceFile>& data = target_->data(); |
if (!non_linkable_deps.empty() || !data.empty()) { |
out_ << " ||"; |