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/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/ast/scopeinfo.h" | 9 #include "src/ast/scopeinfo.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1315 } | 1315 } |
1316 | 1316 |
1317 ProcessPretenuringFeedback(); | 1317 ProcessPretenuringFeedback(); |
1318 } | 1318 } |
1319 | 1319 |
1320 UpdateSurvivalStatistics(start_new_space_size); | 1320 UpdateSurvivalStatistics(start_new_space_size); |
1321 ConfigureInitialOldGenerationSize(); | 1321 ConfigureInitialOldGenerationSize(); |
1322 | 1322 |
1323 isolate_->counters()->objs_since_last_young()->Set(0); | 1323 isolate_->counters()->objs_since_last_young()->Set(0); |
1324 | 1324 |
1325 if (collector != SCAVENGER) { | |
1326 // Callbacks that fire after this point might trigger nested GCs and | |
1327 // restart incremental marking, the assertion can't be moved down. | |
1328 DCHECK(incremental_marking()->IsStopped()); | |
1329 | |
1330 // We finished a marking cycle. We can uncommit the marking deque until | |
1331 // we start marking again. | |
1332 mark_compact_collector()->marking_deque()->Uninitialize(); | |
1333 mark_compact_collector()->EnsureMarkingDequeIsCommitted( | |
1334 MarkCompactCollector::kMinMarkingDequeSize); | |
1335 } | |
1336 | |
1337 gc_post_processing_depth_++; | 1325 gc_post_processing_depth_++; |
1338 { | 1326 { |
1339 AllowHeapAllocation allow_allocation; | 1327 AllowHeapAllocation allow_allocation; |
1340 GCTracer::Scope scope(tracer(), GCTracer::Scope::EXTERNAL); | 1328 GCTracer::Scope scope(tracer(), GCTracer::Scope::EXTERNAL); |
1341 freed_global_handles = | 1329 freed_global_handles = |
1342 isolate_->global_handles()->PostGarbageCollectionProcessing( | 1330 isolate_->global_handles()->PostGarbageCollectionProcessing( |
1343 collector, gc_callback_flags); | 1331 collector, gc_callback_flags); |
1344 } | 1332 } |
1345 gc_post_processing_depth_--; | 1333 gc_post_processing_depth_--; |
1346 | 1334 |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1449 | 1437 |
1450 | 1438 |
1451 void Heap::MarkCompactEpilogue() { | 1439 void Heap::MarkCompactEpilogue() { |
1452 gc_state_ = NOT_IN_GC; | 1440 gc_state_ = NOT_IN_GC; |
1453 | 1441 |
1454 isolate_->counters()->objs_since_last_full()->Set(0); | 1442 isolate_->counters()->objs_since_last_full()->Set(0); |
1455 | 1443 |
1456 incremental_marking()->Epilogue(); | 1444 incremental_marking()->Epilogue(); |
1457 | 1445 |
1458 PreprocessStackTraces(); | 1446 PreprocessStackTraces(); |
| 1447 |
| 1448 DCHECK(incremental_marking()->IsStopped()); |
| 1449 |
| 1450 // We finished a marking cycle. We can uncommit the marking deque until |
| 1451 // we start marking again. |
| 1452 mark_compact_collector()->marking_deque()->Uninitialize(); |
| 1453 mark_compact_collector()->EnsureMarkingDequeIsCommitted( |
| 1454 MarkCompactCollector::kMinMarkingDequeSize); |
1459 } | 1455 } |
1460 | 1456 |
1461 | 1457 |
1462 void Heap::MarkCompactPrologue() { | 1458 void Heap::MarkCompactPrologue() { |
1463 // At any old GC clear the keyed lookup cache to enable collection of unused | 1459 // At any old GC clear the keyed lookup cache to enable collection of unused |
1464 // maps. | 1460 // maps. |
1465 isolate_->keyed_lookup_cache()->Clear(); | 1461 isolate_->keyed_lookup_cache()->Clear(); |
1466 isolate_->context_slot_cache()->Clear(); | 1462 isolate_->context_slot_cache()->Clear(); |
1467 isolate_->descriptor_lookup_cache()->Clear(); | 1463 isolate_->descriptor_lookup_cache()->Clear(); |
1468 RegExpResultsCache::Clear(string_split_cache()); | 1464 RegExpResultsCache::Clear(string_split_cache()); |
(...skipping 4937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6406 } | 6402 } |
6407 | 6403 |
6408 | 6404 |
6409 // static | 6405 // static |
6410 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6406 int Heap::GetStaticVisitorIdForMap(Map* map) { |
6411 return StaticVisitorBase::GetVisitorId(map); | 6407 return StaticVisitorBase::GetVisitorId(map); |
6412 } | 6408 } |
6413 | 6409 |
6414 } // namespace internal | 6410 } // namespace internal |
6415 } // namespace v8 | 6411 } // namespace v8 |
OLD | NEW |