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

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

Issue 2863943002: [heap] Memory reducer calls GC with kGCCallbackFlagCollectAllExternalMemory flag. (Closed)
Patch Set: Created 3 years, 7 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/memory-reducer.cc » ('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/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/ast/context-slot-cache.h" 10 #include "src/ast/context-slot-cache.h"
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 if (reached_limit == IncrementalMarkingLimit::kSoftLimit) { 1108 if (reached_limit == IncrementalMarkingLimit::kSoftLimit) {
1109 incremental_marking()->incremental_marking_job()->ScheduleTask(this); 1109 incremental_marking()->incremental_marking_job()->ScheduleTask(this);
1110 } else if (reached_limit == IncrementalMarkingLimit::kHardLimit) { 1110 } else if (reached_limit == IncrementalMarkingLimit::kHardLimit) {
1111 StartIncrementalMarking(gc_flags, 1111 StartIncrementalMarking(gc_flags,
1112 GarbageCollectionReason::kAllocationLimit, 1112 GarbageCollectionReason::kAllocationLimit,
1113 gc_callback_flags); 1113 gc_callback_flags);
1114 } 1114 }
1115 } 1115 }
1116 } 1116 }
1117 1117
1118 void Heap::StartIdleIncrementalMarking(GarbageCollectionReason gc_reason) { 1118 void Heap::StartIdleIncrementalMarking(
1119 GarbageCollectionReason gc_reason,
1120 const GCCallbackFlags gc_callback_flags) {
1119 gc_idle_time_handler_->ResetNoProgressCounter(); 1121 gc_idle_time_handler_->ResetNoProgressCounter();
1120 StartIncrementalMarking(kReduceMemoryFootprintMask, gc_reason, 1122 StartIncrementalMarking(kReduceMemoryFootprintMask, gc_reason,
1121 kNoGCCallbackFlags); 1123 gc_callback_flags);
1122 } 1124 }
1123 1125
1124 1126
1125 void Heap::MoveElements(FixedArray* array, int dst_index, int src_index, 1127 void Heap::MoveElements(FixedArray* array, int dst_index, int src_index,
1126 int len) { 1128 int len) {
1127 if (len == 0) return; 1129 if (len == 0) return;
1128 1130
1129 DCHECK(array->map() != fixed_cow_array_map()); 1131 DCHECK(array->map() != fixed_cow_array_map());
1130 Object** dst_objects = array->data_start() + dst_index; 1132 Object** dst_objects = array->data_start() + dst_index;
1131 MemMove(dst_objects, array->data_start() + src_index, len * kPointerSize); 1133 MemMove(dst_objects, array->data_start() + src_index, len * kPointerSize);
(...skipping 3093 matching lines...) Expand 10 before | Expand all | Expand 10 after
4225 if (incremental_marking()->IsMarking() && 4227 if (incremental_marking()->IsMarking() &&
4226 (incremental_marking()->IsReadyToOverApproximateWeakClosure() || 4228 (incremental_marking()->IsReadyToOverApproximateWeakClosure() ||
4227 (!incremental_marking()->finalize_marking_completed() && 4229 (!incremental_marking()->finalize_marking_completed() &&
4228 mark_compact_collector()->marking_deque()->IsEmpty() && 4230 mark_compact_collector()->marking_deque()->IsEmpty() &&
4229 local_embedder_heap_tracer()->ShouldFinalizeIncrementalMarking()))) { 4231 local_embedder_heap_tracer()->ShouldFinalizeIncrementalMarking()))) {
4230 FinalizeIncrementalMarking(gc_reason); 4232 FinalizeIncrementalMarking(gc_reason);
4231 } else if (incremental_marking()->IsComplete() || 4233 } else if (incremental_marking()->IsComplete() ||
4232 (mark_compact_collector()->marking_deque()->IsEmpty() && 4234 (mark_compact_collector()->marking_deque()->IsEmpty() &&
4233 local_embedder_heap_tracer() 4235 local_embedder_heap_tracer()
4234 ->ShouldFinalizeIncrementalMarking())) { 4236 ->ShouldFinalizeIncrementalMarking())) {
4235 CollectAllGarbage(current_gc_flags_, gc_reason); 4237 CollectAllGarbage(current_gc_flags_, gc_reason, current_gc_callback_flags_);
4236 } 4238 }
4237 } 4239 }
4238 4240
4239 void Heap::RegisterReservationsForBlackAllocation(Reservation* reservations) { 4241 void Heap::RegisterReservationsForBlackAllocation(Reservation* reservations) {
4240 // TODO(hpayer): We do not have to iterate reservations on black objects 4242 // TODO(hpayer): We do not have to iterate reservations on black objects
4241 // for marking. We just have to execute the special visiting side effect 4243 // for marking. We just have to execute the special visiting side effect
4242 // code that adds objects to global data structures, e.g. for array buffers. 4244 // code that adds objects to global data structures, e.g. for array buffers.
4243 4245
4244 if (incremental_marking()->black_allocation()) { 4246 if (incremental_marking()->black_allocation()) {
4245 // Iterate black objects in old space, code space, map space, and large 4247 // Iterate black objects in old space, code space, map space, and large
(...skipping 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after
6389 case LO_SPACE: 6391 case LO_SPACE:
6390 return "LO_SPACE"; 6392 return "LO_SPACE";
6391 default: 6393 default:
6392 UNREACHABLE(); 6394 UNREACHABLE();
6393 } 6395 }
6394 return NULL; 6396 return NULL;
6395 } 6397 }
6396 6398
6397 } // namespace internal 6399 } // namespace internal
6398 } // namespace v8 6400 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/memory-reducer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698