Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: src/heap.cc

Issue 401793002: Add histograms for idle notification and incremental marking steps (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/counters.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/base/once.h" 9 #include "src/base/once.h"
10 #include "src/base/utils/random-number-generator.h" 10 #include "src/base/utils/random-number-generator.h"
(...skipping 4209 matching lines...) Expand 10 before | Expand all | Expand 10 after
4220 void Heap::MakeHeapIterable() { 4220 void Heap::MakeHeapIterable() {
4221 ASSERT(AllowHeapAllocation::IsAllowed()); 4221 ASSERT(AllowHeapAllocation::IsAllowed());
4222 if (!IsHeapIterable()) { 4222 if (!IsHeapIterable()) {
4223 CollectAllGarbage(kMakeHeapIterableMask, "Heap::MakeHeapIterable"); 4223 CollectAllGarbage(kMakeHeapIterableMask, "Heap::MakeHeapIterable");
4224 } 4224 }
4225 ASSERT(IsHeapIterable()); 4225 ASSERT(IsHeapIterable());
4226 } 4226 }
4227 4227
4228 4228
4229 void Heap::AdvanceIdleIncrementalMarking(intptr_t step_size) { 4229 void Heap::AdvanceIdleIncrementalMarking(intptr_t step_size) {
4230 HistogramTimerScope idle_notification_scope(
4231 isolate_->counters()->gc_incremental_marking());
4232
4230 incremental_marking()->Step(step_size, 4233 incremental_marking()->Step(step_size,
4231 IncrementalMarking::NO_GC_VIA_STACK_GUARD); 4234 IncrementalMarking::NO_GC_VIA_STACK_GUARD);
4232 4235
4233 if (incremental_marking()->IsComplete()) { 4236 if (incremental_marking()->IsComplete()) {
4234 bool uncommit = false; 4237 bool uncommit = false;
4235 if (gc_count_at_last_idle_gc_ == gc_count_) { 4238 if (gc_count_at_last_idle_gc_ == gc_count_) {
4236 // No GC since the last full GC, the mutator is probably not active. 4239 // No GC since the last full GC, the mutator is probably not active.
4237 isolate_->compilation_cache()->Clear(); 4240 isolate_->compilation_cache()->Clear();
4238 uncommit = true; 4241 uncommit = true;
4239 } 4242 }
(...skipping 16 matching lines...) Expand all
4256 const int kMinHintForIncrementalMarking = 10; 4259 const int kMinHintForIncrementalMarking = 10;
4257 // Minimal hint that allows to do full GC. 4260 // Minimal hint that allows to do full GC.
4258 const int kMinHintForFullGC = 100; 4261 const int kMinHintForFullGC = 100;
4259 intptr_t size_factor = Min(Max(hint, 20), kMaxHint) / 4; 4262 intptr_t size_factor = Min(Max(hint, 20), kMaxHint) / 4;
4260 // The size factor is in range [5..250]. The numbers here are chosen from 4263 // The size factor is in range [5..250]. The numbers here are chosen from
4261 // experiments. If you changes them, make sure to test with 4264 // experiments. If you changes them, make sure to test with
4262 // chrome/performance_ui_tests --gtest_filter="GeneralMixMemoryTest.* 4265 // chrome/performance_ui_tests --gtest_filter="GeneralMixMemoryTest.*
4263 intptr_t step_size = 4266 intptr_t step_size =
4264 size_factor * IncrementalMarking::kAllocatedThreshold; 4267 size_factor * IncrementalMarking::kAllocatedThreshold;
4265 4268
4269 HistogramTimerScope idle_notification_scope(
4270 isolate_->counters()->gc_idle_notification());
4271
4266 if (contexts_disposed_ > 0) { 4272 if (contexts_disposed_ > 0) {
4267 contexts_disposed_ = 0; 4273 contexts_disposed_ = 0;
4268 int mark_sweep_time = Min(TimeMarkSweepWouldTakeInMs(), 1000); 4274 int mark_sweep_time = Min(TimeMarkSweepWouldTakeInMs(), 1000);
4269 if (hint >= mark_sweep_time && !FLAG_expose_gc && 4275 if (hint >= mark_sweep_time && !FLAG_expose_gc &&
4270 incremental_marking()->IsStopped()) { 4276 incremental_marking()->IsStopped()) {
4271 HistogramTimerScope scope(isolate_->counters()->gc_context()); 4277 HistogramTimerScope scope(isolate_->counters()->gc_context());
4272 CollectAllGarbage(kReduceMemoryFootprintMask, 4278 CollectAllGarbage(kReduceMemoryFootprintMask,
4273 "idle notification: contexts disposed"); 4279 "idle notification: contexts disposed");
4274 } else { 4280 } else {
4275 AdvanceIdleIncrementalMarking(step_size); 4281 AdvanceIdleIncrementalMarking(step_size);
(...skipping 2150 matching lines...) Expand 10 before | Expand all | Expand 10 after
6426 static_cast<int>(object_sizes_last_time_[index])); 6432 static_cast<int>(object_sizes_last_time_[index]));
6427 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) 6433 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT)
6428 #undef ADJUST_LAST_TIME_OBJECT_COUNT 6434 #undef ADJUST_LAST_TIME_OBJECT_COUNT
6429 6435
6430 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 6436 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
6431 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 6437 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
6432 ClearObjectStats(); 6438 ClearObjectStats();
6433 } 6439 }
6434 6440
6435 } } // namespace v8::internal 6441 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/counters.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698