| 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/base/atomicops.h" | 7 #include "src/base/atomicops.h" |
| 8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
| 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 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2154 if (marking_deque_memory_committed_) { | 2154 if (marking_deque_memory_committed_) { |
| 2155 bool success = marking_deque_memory_->Uncommit( | 2155 bool success = marking_deque_memory_->Uncommit( |
| 2156 reinterpret_cast<Address>(marking_deque_memory_->address()), | 2156 reinterpret_cast<Address>(marking_deque_memory_->address()), |
| 2157 marking_deque_memory_->size()); | 2157 marking_deque_memory_->size()); |
| 2158 CHECK(success); | 2158 CHECK(success); |
| 2159 marking_deque_memory_committed_ = false; | 2159 marking_deque_memory_committed_ = false; |
| 2160 } | 2160 } |
| 2161 } | 2161 } |
| 2162 | 2162 |
| 2163 | 2163 |
| 2164 void MarkCompactCollector::OverApproximateWeakClosure() { |
| 2165 GCTracer::Scope gc_scope(heap()->tracer(), |
| 2166 GCTracer::Scope::MC_INCREMENTAL_WEAKCLOSURE); |
| 2167 |
| 2168 RootMarkingVisitor root_visitor(heap()); |
| 2169 isolate()->global_handles()->IterateObjectGroups( |
| 2170 &root_visitor, &IsUnmarkedHeapObjectWithHeap); |
| 2171 MarkImplicitRefGroups(); |
| 2172 |
| 2173 // Remove object groups after marking phase. |
| 2174 heap()->isolate()->global_handles()->RemoveObjectGroups(); |
| 2175 heap()->isolate()->global_handles()->RemoveImplicitRefGroups(); |
| 2176 } |
| 2177 |
| 2178 |
| 2164 void MarkCompactCollector::MarkLiveObjects() { | 2179 void MarkCompactCollector::MarkLiveObjects() { |
| 2165 GCTracer::Scope gc_scope(heap()->tracer(), GCTracer::Scope::MC_MARK); | 2180 GCTracer::Scope gc_scope(heap()->tracer(), GCTracer::Scope::MC_MARK); |
| 2166 double start_time = 0.0; | 2181 double start_time = 0.0; |
| 2167 if (FLAG_print_cumulative_gc_stat) { | 2182 if (FLAG_print_cumulative_gc_stat) { |
| 2168 start_time = base::OS::TimeCurrentMillis(); | 2183 start_time = base::OS::TimeCurrentMillis(); |
| 2169 } | 2184 } |
| 2170 // The recursive GC marker detects when it is nearing stack overflow, | 2185 // The recursive GC marker detects when it is nearing stack overflow, |
| 2171 // and switches to a different marking system. JS interrupts interfere | 2186 // and switches to a different marking system. JS interrupts interfere |
| 2172 // with the C stack limit check. | 2187 // with the C stack limit check. |
| 2173 PostponeInterruptsScope postpone(isolate()); | 2188 PostponeInterruptsScope postpone(isolate()); |
| (...skipping 2233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4407 SlotsBuffer* buffer = *buffer_address; | 4422 SlotsBuffer* buffer = *buffer_address; |
| 4408 while (buffer != NULL) { | 4423 while (buffer != NULL) { |
| 4409 SlotsBuffer* next_buffer = buffer->next(); | 4424 SlotsBuffer* next_buffer = buffer->next(); |
| 4410 DeallocateBuffer(buffer); | 4425 DeallocateBuffer(buffer); |
| 4411 buffer = next_buffer; | 4426 buffer = next_buffer; |
| 4412 } | 4427 } |
| 4413 *buffer_address = NULL; | 4428 *buffer_address = NULL; |
| 4414 } | 4429 } |
| 4415 } | 4430 } |
| 4416 } // namespace v8::internal | 4431 } // namespace v8::internal |
| OLD | NEW |