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

Side by Side Diff: src/heap/heap.cc

Issue 753543002: Introduce a new growth criterion for the new space behind a flag (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « src/heap/heap.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/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/once.h" 10 #include "src/base/once.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 initial_semispace_size_(Page::kPageSize), 63 initial_semispace_size_(Page::kPageSize),
64 target_semispace_size_(Page::kPageSize), 64 target_semispace_size_(Page::kPageSize),
65 max_old_generation_size_(700ul * (kPointerSize / 4) * MB), 65 max_old_generation_size_(700ul * (kPointerSize / 4) * MB),
66 max_executable_size_(256ul * (kPointerSize / 4) * MB), 66 max_executable_size_(256ul * (kPointerSize / 4) * MB),
67 // Variables set based on semispace_size_ and old_generation_size_ in 67 // Variables set based on semispace_size_ and old_generation_size_ in
68 // ConfigureHeap. 68 // ConfigureHeap.
69 // Will be 4 * reserved_semispace_size_ to ensure that young 69 // Will be 4 * reserved_semispace_size_ to ensure that young
70 // generation can be aligned to its size. 70 // generation can be aligned to its size.
71 maximum_committed_(0), 71 maximum_committed_(0),
72 survived_since_last_expansion_(0), 72 survived_since_last_expansion_(0),
73 survived_last_scavenge_(0),
73 sweep_generation_(0), 74 sweep_generation_(0),
74 always_allocate_scope_depth_(0), 75 always_allocate_scope_depth_(0),
75 contexts_disposed_(0), 76 contexts_disposed_(0),
76 global_ic_age_(0), 77 global_ic_age_(0),
77 flush_monomorphic_ics_(false), 78 flush_monomorphic_ics_(false),
78 scan_on_scavenge_pages_(0), 79 scan_on_scavenge_pages_(0),
79 new_space_(this), 80 new_space_(this),
80 old_pointer_space_(NULL), 81 old_pointer_space_(NULL),
81 old_data_space_(NULL), 82 old_data_space_(NULL),
82 code_space_(NULL), 83 code_space_(NULL),
(...skipping 1211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 1295
1295 HeapObjectIterator data_it(heap->old_data_space()); 1296 HeapObjectIterator data_it(heap->old_data_space());
1296 for (HeapObject* object = data_it.Next(); object != NULL; 1297 for (HeapObject* object = data_it.Next(); object != NULL;
1297 object = data_it.Next()) 1298 object = data_it.Next())
1298 object->Iterate(&v); 1299 object->Iterate(&v);
1299 } 1300 }
1300 #endif // VERIFY_HEAP 1301 #endif // VERIFY_HEAP
1301 1302
1302 1303
1303 void Heap::CheckNewSpaceExpansionCriteria() { 1304 void Heap::CheckNewSpaceExpansionCriteria() {
1304 if (new_space_.TotalCapacity() < new_space_.MaximumCapacity() && 1305 if (FLAG_experimental_new_space_growth_heuristic) {
1305 survived_since_last_expansion_ > new_space_.TotalCapacity()) { 1306 if (new_space_.TotalCapacity() < new_space_.MaximumCapacity() &&
1306 // Grow the size of new space if there is room to grow, enough data 1307 survived_last_scavenge_ * 100 / new_space_.TotalCapacity() >= 10) {
1307 // has survived scavenge since the last expansion and we are not in 1308 // Grow the size of new space if there is room to grow, and more than 10%
1308 // high promotion mode. 1309 // have survived the last scavenge.
1310 new_space_.Grow();
1311 survived_since_last_expansion_ = 0;
1312 }
1313 } else if (new_space_.TotalCapacity() < new_space_.MaximumCapacity() &&
1314 survived_since_last_expansion_ > new_space_.TotalCapacity()) {
1315 // Grow the size of new space if there is room to grow, and enough data
1316 // has survived scavenge since the last expansion.
1309 new_space_.Grow(); 1317 new_space_.Grow();
1310 survived_since_last_expansion_ = 0; 1318 survived_since_last_expansion_ = 0;
1311 } 1319 }
1312 } 1320 }
1313 1321
1314 1322
1315 static bool IsUnscavengedHeapObject(Heap* heap, Object** p) { 1323 static bool IsUnscavengedHeapObject(Heap* heap, Object** p) {
1316 return heap->InNewSpace(*p) && 1324 return heap->InNewSpace(*p) &&
1317 !HeapObject::cast(*p)->map_word().IsForwardingAddress(); 1325 !HeapObject::cast(*p)->map_word().IsForwardingAddress();
1318 } 1326 }
(...skipping 4993 matching lines...) Expand 10 before | Expand all | Expand 10 after
6312 static_cast<int>(object_sizes_last_time_[index])); 6320 static_cast<int>(object_sizes_last_time_[index]));
6313 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) 6321 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT)
6314 #undef ADJUST_LAST_TIME_OBJECT_COUNT 6322 #undef ADJUST_LAST_TIME_OBJECT_COUNT
6315 6323
6316 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); 6324 MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_));
6317 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); 6325 MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_));
6318 ClearObjectStats(); 6326 ClearObjectStats();
6319 } 6327 }
6320 } 6328 }
6321 } // namespace v8::internal 6329 } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698