OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <ostream> // NOLINT(readability/streams) | 5 #include <ostream> // NOLINT(readability/streams) |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "src/base/platform/platform.h" | 8 #include "src/base/platform/platform.h" |
9 #include "src/compilation-statistics.h" | 9 #include "src/compilation-statistics.h" |
10 | 10 |
11 namespace v8 { | 11 namespace v8 { |
12 namespace internal { | 12 namespace internal { |
13 | 13 |
14 void CompilationStatistics::RecordPhaseStats(const char* phase_kind_name, | 14 void CompilationStatistics::RecordPhaseStats(const char* phase_kind_name, |
15 const char* phase_name, | 15 const char* phase_name, |
16 const BasicStats& stats) { | 16 const BasicStats& stats) { |
| 17 base::LockGuard<base::Mutex> guard(&record_mutex_); |
| 18 |
17 std::string phase_name_str(phase_name); | 19 std::string phase_name_str(phase_name); |
18 auto it = phase_map_.find(phase_name_str); | 20 auto it = phase_map_.find(phase_name_str); |
19 if (it == phase_map_.end()) { | 21 if (it == phase_map_.end()) { |
20 PhaseStats phase_stats(phase_map_.size(), phase_kind_name); | 22 PhaseStats phase_stats(phase_map_.size(), phase_kind_name); |
21 it = phase_map_.insert(std::make_pair(phase_name_str, phase_stats)).first; | 23 it = phase_map_.insert(std::make_pair(phase_name_str, phase_stats)).first; |
22 } | 24 } |
23 it->second.Accumulate(stats); | 25 it->second.Accumulate(stats); |
24 } | 26 } |
25 | 27 |
26 | 28 |
27 void CompilationStatistics::RecordPhaseKindStats(const char* phase_kind_name, | 29 void CompilationStatistics::RecordPhaseKindStats(const char* phase_kind_name, |
28 const BasicStats& stats) { | 30 const BasicStats& stats) { |
| 31 base::LockGuard<base::Mutex> guard(&record_mutex_); |
| 32 |
29 std::string phase_kind_name_str(phase_kind_name); | 33 std::string phase_kind_name_str(phase_kind_name); |
30 auto it = phase_kind_map_.find(phase_kind_name_str); | 34 auto it = phase_kind_map_.find(phase_kind_name_str); |
31 if (it == phase_kind_map_.end()) { | 35 if (it == phase_kind_map_.end()) { |
32 PhaseKindStats phase_kind_stats(phase_kind_map_.size()); | 36 PhaseKindStats phase_kind_stats(phase_kind_map_.size()); |
33 it = phase_kind_map_.insert(std::make_pair(phase_kind_name_str, | 37 it = phase_kind_map_.insert(std::make_pair(phase_kind_name_str, |
34 phase_kind_stats)).first; | 38 phase_kind_stats)).first; |
35 } | 39 } |
36 it->second.Accumulate(stats); | 40 it->second.Accumulate(stats); |
37 } | 41 } |
38 | 42 |
39 | 43 |
40 void CompilationStatistics::RecordTotalStats(size_t source_size, | 44 void CompilationStatistics::RecordTotalStats(size_t source_size, |
41 const BasicStats& stats) { | 45 const BasicStats& stats) { |
| 46 base::LockGuard<base::Mutex> guard(&record_mutex_); |
| 47 |
42 source_size += source_size; | 48 source_size += source_size; |
43 total_stats_.Accumulate(stats); | 49 total_stats_.Accumulate(stats); |
44 } | 50 } |
45 | 51 |
46 | 52 |
47 void CompilationStatistics::BasicStats::Accumulate(const BasicStats& stats) { | 53 void CompilationStatistics::BasicStats::Accumulate(const BasicStats& stats) { |
48 delta_ += stats.delta_; | 54 delta_ += stats.delta_; |
49 total_allocated_bytes_ += stats.total_allocated_bytes_; | 55 total_allocated_bytes_ += stats.total_allocated_bytes_; |
50 if (stats.absolute_max_allocated_bytes_ > absolute_max_allocated_bytes_) { | 56 if (stats.absolute_max_allocated_bytes_ > absolute_max_allocated_bytes_) { |
51 absolute_max_allocated_bytes_ = stats.absolute_max_allocated_bytes_; | 57 absolute_max_allocated_bytes_ = stats.absolute_max_allocated_bytes_; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 } | 153 } |
148 | 154 |
149 if (!ps.machine_output) WriteFullLine(os); | 155 if (!ps.machine_output) WriteFullLine(os); |
150 WriteLine(os, ps.machine_output, "totals", s.total_stats_, s.total_stats_); | 156 WriteLine(os, ps.machine_output, "totals", s.total_stats_, s.total_stats_); |
151 | 157 |
152 return os; | 158 return os; |
153 } | 159 } |
154 | 160 |
155 } // namespace internal | 161 } // namespace internal |
156 } // namespace v8 | 162 } // namespace v8 |
OLD | NEW |