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

Side by Side Diff: src/incremental-marking.cc

Issue 426243002: Force incremental marking when called from idle notification. (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/incremental-marking.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/incremental-marking.h" 7 #include "src/incremental-marking.h"
8 8
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/compilation-cache.h" 10 #include "src/compilation-cache.h"
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 if (IsStopped() && WorthActivating() && heap_->NextGCIsLikelyToBeFull()) { 827 if (IsStopped() && WorthActivating() && heap_->NextGCIsLikelyToBeFull()) {
828 // TODO(hpayer): Let's play safe for now, but compaction should be 828 // TODO(hpayer): Let's play safe for now, but compaction should be
829 // in principle possible. 829 // in principle possible.
830 Start(PREVENT_COMPACTION); 830 Start(PREVENT_COMPACTION);
831 } else { 831 } else {
832 Step(allocated * kFastMarking / kInitialMarkingSpeed, GC_VIA_STACK_GUARD); 832 Step(allocated * kFastMarking / kInitialMarkingSpeed, GC_VIA_STACK_GUARD);
833 } 833 }
834 } 834 }
835 835
836 836
837 void IncrementalMarking::Step(intptr_t allocated_bytes, 837 void IncrementalMarking::Step(intptr_t allocated_bytes, CompletionAction action,
838 CompletionAction action) { 838 bool force_marking) {
839 if (heap_->gc_state() != Heap::NOT_IN_GC || 839 if (heap_->gc_state() != Heap::NOT_IN_GC ||
840 !FLAG_incremental_marking || 840 !FLAG_incremental_marking ||
841 !FLAG_incremental_marking_steps || 841 !FLAG_incremental_marking_steps ||
842 (state_ != SWEEPING && state_ != MARKING)) { 842 (state_ != SWEEPING && state_ != MARKING)) {
843 return; 843 return;
844 } 844 }
845 845
846 allocated_ += allocated_bytes; 846 allocated_ += allocated_bytes;
847 847
848 if (allocated_ < kAllocatedThreshold && 848 if (!force_marking && allocated_ < kAllocatedThreshold &&
849 write_barriers_invoked_since_last_step_ < 849 write_barriers_invoked_since_last_step_ <
850 kWriteBarriersInvokedThreshold) { 850 kWriteBarriersInvokedThreshold) {
851 return; 851 return;
852 } 852 }
853 853
854 if (state_ == MARKING && no_marking_scope_depth_ > 0) return; 854 if (state_ == MARKING && no_marking_scope_depth_ > 0) return;
855 855
856 { 856 {
857 HistogramTimerScope incremental_marking_scope( 857 HistogramTimerScope incremental_marking_scope(
858 heap_->isolate()->counters()->gc_incremental_marking()); 858 heap_->isolate()->counters()->gc_incremental_marking());
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
973 bytes_scanned_ = 0; 973 bytes_scanned_ = 0;
974 write_barriers_invoked_since_last_step_ = 0; 974 write_barriers_invoked_since_last_step_ = 0;
975 } 975 }
976 976
977 977
978 int64_t IncrementalMarking::SpaceLeftInOldSpace() { 978 int64_t IncrementalMarking::SpaceLeftInOldSpace() {
979 return heap_->MaxOldGenerationSize() - heap_->PromotedSpaceSizeOfObjects(); 979 return heap_->MaxOldGenerationSize() - heap_->PromotedSpaceSizeOfObjects();
980 } 980 }
981 981
982 } } // namespace v8::internal 982 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/incremental-marking.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698