Index: tools/gn/trace.cc |
diff --git a/tools/gn/trace.cc b/tools/gn/trace.cc |
index a2f34a32d6624d3d4666823568fd4145d4b65f0b..acd735df365cef7707c9cf18c3efc6e29d5d1328 100644 |
--- a/tools/gn/trace.cc |
+++ b/tools/gn/trace.cc |
@@ -185,6 +185,8 @@ std::string SummarizeTraces() { |
std::vector<const TraceItem*> parses; |
std::vector<const TraceItem*> file_execs; |
std::vector<const TraceItem*> script_execs; |
+ std::vector<const TraceItem*> check_headers; |
+ int headers_checked = 0; |
for (size_t i = 0; i < events.size(); i++) { |
switch (events[i]->type()) { |
case TraceItem::TRACE_FILE_PARSE: |
@@ -196,6 +198,12 @@ std::string SummarizeTraces() { |
case TraceItem::TRACE_SCRIPT_EXECUTE: |
script_execs.push_back(events[i]); |
break; |
+ case TraceItem::TRACE_CHECK_HEADERS: |
+ check_headers.push_back(events[i]); |
+ break; |
+ case TraceItem::TRACE_CHECK_HEADER: |
+ headers_checked++; |
+ break; |
case TraceItem::TRACE_FILE_LOAD: |
case TraceItem::TRACE_FILE_WRITE: |
case TraceItem::TRACE_DEFINE_TARGET: |
@@ -211,6 +219,19 @@ std::string SummarizeTraces() { |
SummarizeScriptExecs(script_execs, out); |
out << std::endl; |
+ // Generally there will only be one header check, but it's theoretically |
+ // possible for more than one to run if more than one build is going in |
+ // parallel. Just report the total of all of them. |
+ if (!check_headers.empty()) { |
+ float check_headers_time = 0; |
+ for (size_t i = 0; i < check_headers.size(); i++) |
+ check_headers_time += check_headers[i]->delta().InMillisecondsF(); |
+ |
+ out << "Header check time: (total time in ms, files checked)\n"; |
+ out << base::StringPrintf(" %8.2f %d\n", |
+ check_headers_time, headers_checked); |
+ } |
+ |
return out.str(); |
} |
@@ -261,6 +282,13 @@ void SaveTraces(const base::FilePath& file_name) { |
break; |
case TraceItem::TRACE_DEFINE_TARGET: |
out << "\"define\""; |
+ break; |
+ case TraceItem::TRACE_CHECK_HEADER: |
+ out << "\"hdr\""; |
+ break; |
+ case TraceItem::TRACE_CHECK_HEADERS: |
+ out << "\"header_check\""; |
+ break; |
} |
if (!item.toolchain().empty() || !item.cmdline().empty()) { |