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/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/compilation-cache.h" | 9 #include "src/compilation-cache.h" |
10 #include "src/cpu-profiler.h" | 10 #include "src/cpu-profiler.h" |
(...skipping 4206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4217 if (how_to_sweep == PARALLEL_CONSERVATIVE || | 4217 if (how_to_sweep == PARALLEL_CONSERVATIVE || |
4218 how_to_sweep == CONCURRENT_CONSERVATIVE) { | 4218 how_to_sweep == CONCURRENT_CONSERVATIVE) { |
4219 StartSweeperThreads(); | 4219 StartSweeperThreads(); |
4220 } | 4220 } |
4221 | 4221 |
4222 if (how_to_sweep == PARALLEL_CONSERVATIVE) { | 4222 if (how_to_sweep == PARALLEL_CONSERVATIVE) { |
4223 WaitUntilSweepingCompleted(); | 4223 WaitUntilSweepingCompleted(); |
4224 } | 4224 } |
4225 } | 4225 } |
4226 RemoveDeadInvalidatedCode(); | 4226 RemoveDeadInvalidatedCode(); |
4227 SweepSpace(heap()->code_space(), PRECISE); | |
4228 | 4227 |
4229 SweepSpace(heap()->cell_space(), PRECISE); | 4228 { GCTracer::Scope sweep_scope(tracer_, GCTracer::Scope::MC_SWEEP_CODE); |
4230 SweepSpace(heap()->property_cell_space(), PRECISE); | 4229 SweepSpace(heap()->code_space(), PRECISE); |
| 4230 } |
| 4231 |
| 4232 { GCTracer::Scope sweep_scope(tracer_, GCTracer::Scope::MC_SWEEP_CELL); |
| 4233 SweepSpace(heap()->cell_space(), PRECISE); |
| 4234 SweepSpace(heap()->property_cell_space(), PRECISE); |
| 4235 } |
4231 | 4236 |
4232 EvacuateNewSpaceAndCandidates(); | 4237 EvacuateNewSpaceAndCandidates(); |
4233 | 4238 |
4234 // ClearNonLiveTransitions depends on precise sweeping of map space to | 4239 // ClearNonLiveTransitions depends on precise sweeping of map space to |
4235 // detect whether unmarked map became dead in this collection or in one | 4240 // detect whether unmarked map became dead in this collection or in one |
4236 // of the previous ones. | 4241 // of the previous ones. |
4237 SweepSpace(heap()->map_space(), PRECISE); | 4242 { GCTracer::Scope sweep_scope(tracer_, GCTracer::Scope::MC_SWEEP_MAP); |
| 4243 SweepSpace(heap()->map_space(), PRECISE); |
| 4244 } |
4238 | 4245 |
4239 // Deallocate unmarked objects and clear marked bits for marked objects. | 4246 // Deallocate unmarked objects and clear marked bits for marked objects. |
4240 heap_->lo_space()->FreeUnmarkedObjects(); | 4247 heap_->lo_space()->FreeUnmarkedObjects(); |
4241 | 4248 |
4242 // Deallocate evacuated candidate pages. | 4249 // Deallocate evacuated candidate pages. |
4243 ReleaseEvacuationCandidates(); | 4250 ReleaseEvacuationCandidates(); |
4244 } | 4251 } |
4245 | 4252 |
4246 | 4253 |
4247 void MarkCompactCollector::ParallelSweepSpaceComplete(PagedSpace* space) { | 4254 void MarkCompactCollector::ParallelSweepSpaceComplete(PagedSpace* space) { |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4481 while (buffer != NULL) { | 4488 while (buffer != NULL) { |
4482 SlotsBuffer* next_buffer = buffer->next(); | 4489 SlotsBuffer* next_buffer = buffer->next(); |
4483 DeallocateBuffer(buffer); | 4490 DeallocateBuffer(buffer); |
4484 buffer = next_buffer; | 4491 buffer = next_buffer; |
4485 } | 4492 } |
4486 *buffer_address = NULL; | 4493 *buffer_address = NULL; |
4487 } | 4494 } |
4488 | 4495 |
4489 | 4496 |
4490 } } // namespace v8::internal | 4497 } } // namespace v8::internal |
OLD | NEW |