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 <cmath> | 5 #include <cmath> |
6 #include <limits> | 6 #include <limits> |
7 | 7 |
8 #include "src/globals.h" | 8 #include "src/globals.h" |
9 #include "src/heap/gc-tracer.h" | 9 #include "src/heap/gc-tracer.h" |
10 #include "src/isolate.h" | 10 #include "src/isolate.h" |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 EXPECT_EQ((counter3 - counter1) / (time3 - time1), throughput); | 153 EXPECT_EQ((counter3 - counter1) / (time3 - time1), throughput); |
154 } | 154 } |
155 | 155 |
156 TEST_F(GCTracerTest, RegularScope) { | 156 TEST_F(GCTracerTest, RegularScope) { |
157 GCTracer* tracer = i_isolate()->heap()->tracer(); | 157 GCTracer* tracer = i_isolate()->heap()->tracer(); |
158 tracer->ResetForTesting(); | 158 tracer->ResetForTesting(); |
159 | 159 |
160 EXPECT_DOUBLE_EQ(0.0, tracer->current_.scopes[GCTracer::Scope::MC_MARK]); | 160 EXPECT_DOUBLE_EQ(0.0, tracer->current_.scopes[GCTracer::Scope::MC_MARK]); |
161 // Sample not added because it's not within a started tracer. | 161 // Sample not added because it's not within a started tracer. |
162 tracer->AddScopeSample(GCTracer::Scope::MC_MARK, 100); | 162 tracer->AddScopeSample(GCTracer::Scope::MC_MARK, 100); |
163 tracer->Start(MARK_COMPACTOR, "gc unittest", "collector unittest"); | 163 tracer->Start(MARK_COMPACTOR, GarbageCollectionReason::kTesting, |
| 164 "collector unittest"); |
164 tracer->AddScopeSample(GCTracer::Scope::MC_MARK, 100); | 165 tracer->AddScopeSample(GCTracer::Scope::MC_MARK, 100); |
165 tracer->Stop(MARK_COMPACTOR); | 166 tracer->Stop(MARK_COMPACTOR); |
166 EXPECT_DOUBLE_EQ(100.0, tracer->current_.scopes[GCTracer::Scope::MC_MARK]); | 167 EXPECT_DOUBLE_EQ(100.0, tracer->current_.scopes[GCTracer::Scope::MC_MARK]); |
167 } | 168 } |
168 | 169 |
169 TEST_F(GCTracerTest, IncrementalScope) { | 170 TEST_F(GCTracerTest, IncrementalScope) { |
170 GCTracer* tracer = i_isolate()->heap()->tracer(); | 171 GCTracer* tracer = i_isolate()->heap()->tracer(); |
171 tracer->ResetForTesting(); | 172 tracer->ResetForTesting(); |
172 | 173 |
173 EXPECT_DOUBLE_EQ( | 174 EXPECT_DOUBLE_EQ( |
174 0.0, tracer->current_.scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE]); | 175 0.0, tracer->current_.scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE]); |
175 // Sample is added because its ScopeId is listed as incremental sample. | 176 // Sample is added because its ScopeId is listed as incremental sample. |
176 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); | 177 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); |
177 tracer->Start(MARK_COMPACTOR, "gc unittest", "collector unittest"); | 178 tracer->Start(MARK_COMPACTOR, GarbageCollectionReason::kTesting, |
| 179 "collector unittest"); |
178 // Switch to incremental MC to enable writing back incremental scopes. | 180 // Switch to incremental MC to enable writing back incremental scopes. |
179 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; | 181 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; |
180 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); | 182 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); |
181 tracer->Stop(MARK_COMPACTOR); | 183 tracer->Stop(MARK_COMPACTOR); |
182 EXPECT_DOUBLE_EQ( | 184 EXPECT_DOUBLE_EQ( |
183 200.0, tracer->current_.scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE]); | 185 200.0, tracer->current_.scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE]); |
184 } | 186 } |
185 | 187 |
186 TEST_F(GCTracerTest, IncrementalMarkingDetails) { | 188 TEST_F(GCTracerTest, IncrementalMarkingDetails) { |
187 GCTracer* tracer = i_isolate()->heap()->tracer(); | 189 GCTracer* tracer = i_isolate()->heap()->tracer(); |
188 tracer->ResetForTesting(); | 190 tracer->ResetForTesting(); |
189 | 191 |
190 // Round 1. | 192 // Round 1. |
191 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 50); | 193 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 50); |
192 tracer->Start(MARK_COMPACTOR, "gc unittest", "collector unittest"); | 194 tracer->Start(MARK_COMPACTOR, GarbageCollectionReason::kTesting, |
| 195 "collector unittest"); |
193 // Switch to incremental MC to enable writing back incremental scopes. | 196 // Switch to incremental MC to enable writing back incremental scopes. |
194 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; | 197 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; |
195 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); | 198 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 100); |
196 tracer->Stop(MARK_COMPACTOR); | 199 tracer->Stop(MARK_COMPACTOR); |
197 EXPECT_DOUBLE_EQ( | 200 EXPECT_DOUBLE_EQ( |
198 100, | 201 100, |
199 tracer->current_ | 202 tracer->current_ |
200 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 203 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
201 .longest_step); | 204 .longest_step); |
202 EXPECT_EQ( | 205 EXPECT_EQ( |
203 2, | 206 2, |
204 tracer->current_ | 207 tracer->current_ |
205 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 208 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
206 .steps); | 209 .steps); |
207 EXPECT_DOUBLE_EQ( | 210 EXPECT_DOUBLE_EQ( |
208 150, | 211 150, |
209 tracer->current_ | 212 tracer->current_ |
210 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 213 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
211 .cumulative_duration); | 214 .cumulative_duration); |
212 | 215 |
213 // Round 2. Cumulative numbers should add up, others should be reset. | 216 // Round 2. Cumulative numbers should add up, others should be reset. |
214 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 13); | 217 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 13); |
215 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 15); | 218 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 15); |
216 tracer->Start(MARK_COMPACTOR, "gc unittest", "collector unittest"); | 219 tracer->Start(MARK_COMPACTOR, GarbageCollectionReason::kTesting, |
| 220 "collector unittest"); |
217 // Switch to incremental MC to enable writing back incremental scopes. | 221 // Switch to incremental MC to enable writing back incremental scopes. |
218 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; | 222 tracer->current_.type = GCTracer::Event::INCREMENTAL_MARK_COMPACTOR; |
219 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 122); | 223 tracer->AddScopeSample(GCTracer::Scope::MC_INCREMENTAL_FINALIZE, 122); |
220 tracer->Stop(MARK_COMPACTOR); | 224 tracer->Stop(MARK_COMPACTOR); |
221 EXPECT_DOUBLE_EQ( | 225 EXPECT_DOUBLE_EQ( |
222 122, | 226 122, |
223 tracer->current_ | 227 tracer->current_ |
224 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 228 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
225 .longest_step); | 229 .longest_step); |
226 EXPECT_EQ( | 230 EXPECT_EQ( |
227 3, | 231 3, |
228 tracer->current_ | 232 tracer->current_ |
229 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 233 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
230 .steps); | 234 .steps); |
231 EXPECT_DOUBLE_EQ( | 235 EXPECT_DOUBLE_EQ( |
232 300, | 236 300, |
233 tracer->current_ | 237 tracer->current_ |
234 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] | 238 .incremental_marking_scopes[GCTracer::Scope::MC_INCREMENTAL_FINALIZE] |
235 .cumulative_duration); | 239 .cumulative_duration); |
236 } | 240 } |
237 | 241 |
238 } // namespace internal | 242 } // namespace internal |
239 } // namespace v8 | 243 } // namespace v8 |
OLD | NEW |