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/heap/incremental-marking.h" | 7 #include "src/heap/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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
180 do { | 180 do { |
181 VisitPointersWithAnchor(heap, HeapObject::RawField(object, 0), | 181 VisitPointersWithAnchor(heap, HeapObject::RawField(object, 0), |
182 HeapObject::RawField(object, start_offset), | 182 HeapObject::RawField(object, start_offset), |
183 HeapObject::RawField(object, end_offset)); | 183 HeapObject::RawField(object, end_offset)); |
184 start_offset = end_offset; | 184 start_offset = end_offset; |
185 end_offset = Min(object_size, end_offset + kProgressBarScanningChunk); | 185 end_offset = Min(object_size, end_offset + kProgressBarScanningChunk); |
186 scan_until_end = | 186 scan_until_end = |
187 heap->mark_compact_collector()->marking_deque()->IsFull(); | 187 heap->mark_compact_collector()->marking_deque()->IsFull(); |
188 } while (scan_until_end && start_offset < object_size); | 188 } while (scan_until_end && start_offset < object_size); |
189 chunk->set_progress_bar(start_offset); | 189 chunk->set_progress_bar(start_offset); |
190 if (start_offset < object_size) { | 190 if (start_offset < object_size) { |
Hannes Payer (out of office)
2015/05/15 15:26:06
As discussed offline, let's figure out the reason
| |
191 heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object); | 191 if (Marking::IsGrey(Marking::MarkBitFrom(object))) { |
192 heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object); | |
193 } else { | |
194 DCHECK(Marking::IsBlack(Marking::MarkBitFrom(object))); | |
195 heap->mark_compact_collector()->marking_deque()->UnshiftBlack(object); | |
196 } | |
192 heap->incremental_marking()->NotifyIncompleteScanOfObject( | 197 heap->incremental_marking()->NotifyIncompleteScanOfObject( |
193 object_size - (start_offset - already_scanned_offset)); | 198 object_size - (start_offset - already_scanned_offset)); |
194 } | 199 } |
195 } else { | 200 } else { |
196 FixedArrayVisitor::Visit(map, object); | 201 FixedArrayVisitor::Visit(map, object); |
197 } | 202 } |
198 } | 203 } |
199 | 204 |
200 static void VisitNativeContextIncremental(Map* map, HeapObject* object) { | 205 static void VisitNativeContextIncremental(Map* map, HeapObject* object) { |
201 Context* context = Context::cast(object); | 206 Context* context = Context::cast(object); |
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1028 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { | 1033 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { |
1029 idle_marking_delay_counter_++; | 1034 idle_marking_delay_counter_++; |
1030 } | 1035 } |
1031 | 1036 |
1032 | 1037 |
1033 void IncrementalMarking::ClearIdleMarkingDelayCounter() { | 1038 void IncrementalMarking::ClearIdleMarkingDelayCounter() { |
1034 idle_marking_delay_counter_ = 0; | 1039 idle_marking_delay_counter_ = 0; |
1035 } | 1040 } |
1036 } | 1041 } |
1037 } // namespace v8::internal | 1042 } // namespace v8::internal |
OLD | NEW |