OLD | NEW |
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/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/once.h" | 10 #include "src/base/once.h" |
(...skipping 5157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5168 return amount_of_external_allocated_memory_ - | 5168 return amount_of_external_allocated_memory_ - |
5169 amount_of_external_allocated_memory_at_last_global_gc_; | 5169 amount_of_external_allocated_memory_at_last_global_gc_; |
5170 } | 5170 } |
5171 | 5171 |
5172 | 5172 |
5173 intptr_t Heap::OldGenerationAllocationLimit(intptr_t old_gen_size, | 5173 intptr_t Heap::OldGenerationAllocationLimit(intptr_t old_gen_size, |
5174 int freed_global_handles) { | 5174 int freed_global_handles) { |
5175 const int kMaxHandles = 1000; | 5175 const int kMaxHandles = 1000; |
5176 const int kMinHandles = 100; | 5176 const int kMinHandles = 100; |
5177 double min_factor = 1.1; | 5177 double min_factor = 1.1; |
5178 double max_factor = 1.5; | 5178 double max_factor = 4; |
5179 // We set the old generation growing factor to 2 to grow the heap slower on | 5179 // We set the old generation growing factor to 2 to grow the heap slower on |
5180 // memory-constrained devices. | 5180 // memory-constrained devices. |
5181 if (max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice) { | 5181 if (max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice) { |
5182 max_factor = 1.5; | 5182 max_factor = 2; |
5183 } | 5183 } |
5184 // If there are many freed global handles, then the next full GC will | 5184 // If there are many freed global handles, then the next full GC will |
5185 // likely collect a lot of garbage. Choose the heap growing factor | 5185 // likely collect a lot of garbage. Choose the heap growing factor |
5186 // depending on freed global handles. | 5186 // depending on freed global handles. |
5187 // TODO(ulan, hpayer): Take into account mutator utilization. | 5187 // TODO(ulan, hpayer): Take into account mutator utilization. |
5188 double factor; | 5188 double factor; |
5189 if (freed_global_handles <= kMinHandles) { | 5189 if (freed_global_handles <= kMinHandles) { |
5190 factor = max_factor; | 5190 factor = max_factor; |
5191 } else if (freed_global_handles >= kMaxHandles) { | 5191 } else if (freed_global_handles >= kMaxHandles) { |
5192 factor = min_factor; | 5192 factor = min_factor; |
(...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6301 static_cast<int>(object_sizes_last_time_[index])); | 6301 static_cast<int>(object_sizes_last_time_[index])); |
6302 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 6302 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
6303 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 6303 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
6304 | 6304 |
6305 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 6305 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
6306 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 6306 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
6307 ClearObjectStats(); | 6307 ClearObjectStats(); |
6308 } | 6308 } |
6309 } | 6309 } |
6310 } // namespace v8::internal | 6310 } // namespace v8::internal |
OLD | NEW |