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

Side by Side Diff: src/heap.cc

Issue 420753002: Added histogram to track distribution of requested idle notifications. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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.cc ('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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 namespace v8 { 47 namespace v8 {
48 namespace internal { 48 namespace internal {
49 49
50 50
51 Heap::Heap() 51 Heap::Heap()
52 : amount_of_external_allocated_memory_(0), 52 : amount_of_external_allocated_memory_(0),
53 amount_of_external_allocated_memory_at_last_global_gc_(0), 53 amount_of_external_allocated_memory_at_last_global_gc_(0),
54 isolate_(NULL), 54 isolate_(NULL),
55 code_range_size_(0), 55 code_range_size_(0),
56 // semispace_size_ should be a power of 2 and old_generation_size_ should be 56 // semispace_size_ should be a power of 2 and old_generation_size_ should
57 // a multiple of Page::kPageSize. 57 // be a multiple of Page::kPageSize.
58 reserved_semispace_size_(8 * (kPointerSize / 4) * MB), 58 reserved_semispace_size_(8 * (kPointerSize / 4) * MB),
59 max_semi_space_size_(8 * (kPointerSize / 4) * MB), 59 max_semi_space_size_(8 * (kPointerSize / 4) * MB),
60 initial_semispace_size_(Page::kPageSize), 60 initial_semispace_size_(Page::kPageSize),
61 max_old_generation_size_(700ul * (kPointerSize / 4) * MB), 61 max_old_generation_size_(700ul * (kPointerSize / 4) * MB),
62 max_executable_size_(256ul * (kPointerSize / 4) * MB), 62 max_executable_size_(256ul * (kPointerSize / 4) * MB),
63 // Variables set based on semispace_size_ and old_generation_size_ in 63 // Variables set based on semispace_size_ and old_generation_size_ in
64 // ConfigureHeap. 64 // ConfigureHeap.
65 // Will be 4 * reserved_semispace_size_ to ensure that young 65 // Will be 4 * reserved_semispace_size_ to ensure that young
66 // generation can be aligned to its size. 66 // generation can be aligned to its size.
67 maximum_committed_(0), 67 maximum_committed_(0),
68 survived_since_last_expansion_(0), 68 survived_since_last_expansion_(0),
69 sweep_generation_(0), 69 sweep_generation_(0),
70 always_allocate_scope_depth_(0), 70 always_allocate_scope_depth_(0),
71 contexts_disposed_(0), 71 contexts_disposed_(0),
72 global_ic_age_(0), 72 global_ic_age_(0),
73 flush_monomorphic_ics_(false), 73 flush_monomorphic_ics_(false),
74 scan_on_scavenge_pages_(0), 74 scan_on_scavenge_pages_(0),
75 new_space_(this), 75 new_space_(this),
76 old_pointer_space_(NULL), 76 old_pointer_space_(NULL),
(...skipping 4184 matching lines...) Expand 10 before | Expand all | Expand 10 after
4261 const int kMinHintForIncrementalMarking = 10; 4261 const int kMinHintForIncrementalMarking = 10;
4262 // Minimal hint that allows to do full GC. 4262 // Minimal hint that allows to do full GC.
4263 const int kMinHintForFullGC = 100; 4263 const int kMinHintForFullGC = 100;
4264 intptr_t size_factor = Min(Max(hint, 20), kMaxHint) / 4; 4264 intptr_t size_factor = Min(Max(hint, 20), kMaxHint) / 4;
4265 // The size factor is in range [5..250]. The numbers here are chosen from 4265 // The size factor is in range [5..250]. The numbers here are chosen from
4266 // experiments. If you changes them, make sure to test with 4266 // experiments. If you changes them, make sure to test with
4267 // chrome/performance_ui_tests --gtest_filter="GeneralMixMemoryTest.* 4267 // chrome/performance_ui_tests --gtest_filter="GeneralMixMemoryTest.*
4268 intptr_t step_size = 4268 intptr_t step_size =
4269 size_factor * IncrementalMarking::kAllocatedThreshold; 4269 size_factor * IncrementalMarking::kAllocatedThreshold;
4270 4270
4271 isolate()->counters()->gc_idle_time_allotted_in_ms()->AddSample(hint);
4271 HistogramTimerScope idle_notification_scope( 4272 HistogramTimerScope idle_notification_scope(
4272 isolate_->counters()->gc_idle_notification()); 4273 isolate_->counters()->gc_idle_notification());
4273 4274
4274 if (contexts_disposed_ > 0) { 4275 if (contexts_disposed_ > 0) {
4275 contexts_disposed_ = 0; 4276 contexts_disposed_ = 0;
4276 int mark_sweep_time = Min(TimeMarkSweepWouldTakeInMs(), 1000); 4277 int mark_sweep_time = Min(TimeMarkSweepWouldTakeInMs(), 1000);
4277 if (hint >= mark_sweep_time && !FLAG_expose_gc && 4278 if (hint >= mark_sweep_time && !FLAG_expose_gc &&
4278 incremental_marking()->IsStopped()) { 4279 incremental_marking()->IsStopped()) {
4279 HistogramTimerScope scope(isolate_->counters()->gc_context()); 4280 HistogramTimerScope scope(isolate_->counters()->gc_context());
4280 CollectAllGarbage(kReduceMemoryFootprintMask, 4281 CollectAllGarbage(kReduceMemoryFootprintMask,
(...skipping 2169 matching lines...) Expand 10 before | Expand all | Expand 10 after
6450 static_cast<int>(object_sizes_last_time_[index])); 6451 static_cast<int>(object_sizes_last_time_[index]));
6451 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) 6452 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT)
6452 #undef ADJUST_LAST_TIME_OBJECT_COUNT 6453 #undef ADJUST_LAST_TIME_OBJECT_COUNT
6453 6454
6454 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 6455 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
6455 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 6456 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
6456 ClearObjectStats(); 6457 ClearObjectStats();
6457 } 6458 }
6458 6459
6459 } } // namespace v8::internal 6460 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/counters.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698