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

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

Issue 2333293002: [heap] Remove old_gen_exhausted_ state. (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/heap-inl.h » ('j') | 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/heap/heap.h" 5 #include "src/heap/heap.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/ast/context-slot-cache.h" 9 #include "src/ast/context-slot-cache.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 gc_post_processing_depth_(0), 105 gc_post_processing_depth_(0),
106 allocations_count_(0), 106 allocations_count_(0),
107 raw_allocations_hash_(0), 107 raw_allocations_hash_(0),
108 ms_count_(0), 108 ms_count_(0),
109 gc_count_(0), 109 gc_count_(0),
110 remembered_unmapped_pages_index_(0), 110 remembered_unmapped_pages_index_(0),
111 #ifdef DEBUG 111 #ifdef DEBUG
112 allocation_timeout_(0), 112 allocation_timeout_(0),
113 #endif // DEBUG 113 #endif // DEBUG
114 old_generation_allocation_limit_(initial_old_generation_size_), 114 old_generation_allocation_limit_(initial_old_generation_size_),
115 old_gen_exhausted_(false),
116 inline_allocation_disabled_(false), 115 inline_allocation_disabled_(false),
117 total_regexp_code_generated_(0), 116 total_regexp_code_generated_(0),
118 tracer_(nullptr), 117 tracer_(nullptr),
119 high_survival_rate_period_length_(0), 118 high_survival_rate_period_length_(0),
120 promoted_objects_size_(0), 119 promoted_objects_size_(0),
121 promotion_ratio_(0), 120 promotion_ratio_(0),
122 semi_space_copied_object_size_(0), 121 semi_space_copied_object_size_(0),
123 previous_semi_space_copied_object_size_(0), 122 previous_semi_space_copied_object_size_(0),
124 semi_space_copied_rate_(0), 123 semi_space_copied_rate_(0),
125 nodes_died_in_new_space_(0), 124 nodes_died_in_new_space_(0),
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 return MARK_COMPACTOR; 274 return MARK_COMPACTOR;
276 } 275 }
277 276
278 // Is enough data promoted to justify a global GC? 277 // Is enough data promoted to justify a global GC?
279 if (OldGenerationAllocationLimitReached()) { 278 if (OldGenerationAllocationLimitReached()) {
280 isolate_->counters()->gc_compactor_caused_by_promoted_data()->Increment(); 279 isolate_->counters()->gc_compactor_caused_by_promoted_data()->Increment();
281 *reason = "promotion limit reached"; 280 *reason = "promotion limit reached";
282 return MARK_COMPACTOR; 281 return MARK_COMPACTOR;
283 } 282 }
284 283
285 // Have allocation in OLD and LO failed?
286 if (old_gen_exhausted_) {
287 isolate_->counters()
288 ->gc_compactor_caused_by_oldspace_exhaustion()
289 ->Increment();
290 *reason = "old generations exhausted";
291 return MARK_COMPACTOR;
292 }
293
294 // Is there enough space left in OLD to guarantee that a scavenge can 284 // Is there enough space left in OLD to guarantee that a scavenge can
295 // succeed? 285 // succeed?
296 // 286 //
297 // Note that MemoryAllocator->MaxAvailable() undercounts the memory available 287 // Note that MemoryAllocator->MaxAvailable() undercounts the memory available
298 // for object promotion. It counts only the bytes that the memory 288 // for object promotion. It counts only the bytes that the memory
299 // allocator has not yet allocated from the OS and assigned to any space, 289 // allocator has not yet allocated from the OS and assigned to any space,
300 // and does not count available bytes already in the old space or code 290 // and does not count available bytes already in the old space or code
301 // space. Undercounting is safe---we may get an unrequested full GC when 291 // space. Undercounting is safe---we may get an unrequested full GC when
302 // a scavenge would have succeeded. 292 // a scavenge would have succeeded.
303 if (memory_allocator()->MaxAvailable() <= new_space_->Size()) { 293 if (memory_allocator()->MaxAvailable() <= new_space_->Size()) {
(...skipping 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 incremental_marking()->NotifyOfHighPromotionRate(); 1324 incremental_marking()->NotifyOfHighPromotionRate();
1335 } 1325 }
1336 1326
1337 { 1327 {
1338 Heap::PretenuringScope pretenuring_scope(this); 1328 Heap::PretenuringScope pretenuring_scope(this);
1339 1329
1340 if (collector == MARK_COMPACTOR) { 1330 if (collector == MARK_COMPACTOR) {
1341 UpdateOldGenerationAllocationCounter(); 1331 UpdateOldGenerationAllocationCounter();
1342 // Perform mark-sweep with optional compaction. 1332 // Perform mark-sweep with optional compaction.
1343 MarkCompact(); 1333 MarkCompact();
1344 old_gen_exhausted_ = false;
1345 old_generation_size_configured_ = true; 1334 old_generation_size_configured_ = true;
1346 // This should be updated before PostGarbageCollectionProcessing, which 1335 // This should be updated before PostGarbageCollectionProcessing, which
1347 // can cause another GC. Take into account the objects promoted during GC. 1336 // can cause another GC. Take into account the objects promoted during GC.
1348 old_generation_allocation_counter_ += 1337 old_generation_allocation_counter_ +=
1349 static_cast<size_t>(promoted_objects_size_); 1338 static_cast<size_t>(promoted_objects_size_);
1350 old_generation_size_at_last_gc_ = PromotedSpaceSizeOfObjects(); 1339 old_generation_size_at_last_gc_ = PromotedSpaceSizeOfObjects();
1351 } else { 1340 } else {
1352 Scavenge(); 1341 Scavenge();
1353 } 1342 }
1354 1343
(...skipping 5175 matching lines...) Expand 10 before | Expand all | Expand 10 after
6530 } 6519 }
6531 6520
6532 6521
6533 // static 6522 // static
6534 int Heap::GetStaticVisitorIdForMap(Map* map) { 6523 int Heap::GetStaticVisitorIdForMap(Map* map) {
6535 return StaticVisitorBase::GetVisitorId(map); 6524 return StaticVisitorBase::GetVisitorId(map);
6536 } 6525 }
6537 6526
6538 } // namespace internal 6527 } // namespace internal
6539 } // namespace v8 6528 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/heap-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698