| 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 2258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2269 InternalizedStringTableCleaner internalized_visitor(heap()); | 2269 InternalizedStringTableCleaner internalized_visitor(heap()); |
| 2270 string_table->IterateElements(&internalized_visitor); | 2270 string_table->IterateElements(&internalized_visitor); |
| 2271 string_table->ElementsRemoved(internalized_visitor.PointersRemoved()); | 2271 string_table->ElementsRemoved(internalized_visitor.PointersRemoved()); |
| 2272 | 2272 |
| 2273 ExternalStringTableCleaner external_visitor(heap()); | 2273 ExternalStringTableCleaner external_visitor(heap()); |
| 2274 heap()->external_string_table_.Iterate(&external_visitor); | 2274 heap()->external_string_table_.Iterate(&external_visitor); |
| 2275 heap()->external_string_table_.CleanUp(); | 2275 heap()->external_string_table_.CleanUp(); |
| 2276 | 2276 |
| 2277 // Process the weak references. | 2277 // Process the weak references. |
| 2278 MarkCompactWeakObjectRetainer mark_compact_object_retainer; | 2278 MarkCompactWeakObjectRetainer mark_compact_object_retainer; |
| 2279 heap()->ProcessWeakReferences(&mark_compact_object_retainer); | 2279 heap()->ProcessAllWeakReferences(&mark_compact_object_retainer); |
| 2280 | 2280 |
| 2281 // Remove object groups after marking phase. | 2281 // Remove object groups after marking phase. |
| 2282 heap()->isolate()->global_handles()->RemoveObjectGroups(); | 2282 heap()->isolate()->global_handles()->RemoveObjectGroups(); |
| 2283 heap()->isolate()->global_handles()->RemoveImplicitRefGroups(); | 2283 heap()->isolate()->global_handles()->RemoveImplicitRefGroups(); |
| 2284 | 2284 |
| 2285 // Flush code from collected candidates. | 2285 // Flush code from collected candidates. |
| 2286 if (is_code_flushing_enabled()) { | 2286 if (is_code_flushing_enabled()) { |
| 2287 code_flusher_->ProcessCandidates(); | 2287 code_flusher_->ProcessCandidates(); |
| 2288 // If incremental marker does not support code flushing, we need to | 2288 // If incremental marker does not support code flushing, we need to |
| 2289 // disable it before incremental marking steps for next cycle. | 2289 // disable it before incremental marking steps for next cycle. |
| (...skipping 1249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3539 WeakHashTable::cast(heap_->weak_object_to_code_table()); | 3539 WeakHashTable::cast(heap_->weak_object_to_code_table()); |
| 3540 table->Iterate(&updating_visitor); | 3540 table->Iterate(&updating_visitor); |
| 3541 table->Rehash(heap_->isolate()->factory()->undefined_value()); | 3541 table->Rehash(heap_->isolate()->factory()->undefined_value()); |
| 3542 } | 3542 } |
| 3543 | 3543 |
| 3544 // Update pointers from external string table. | 3544 // Update pointers from external string table. |
| 3545 heap_->UpdateReferencesInExternalStringTable( | 3545 heap_->UpdateReferencesInExternalStringTable( |
| 3546 &UpdateReferenceInExternalStringTableEntry); | 3546 &UpdateReferenceInExternalStringTableEntry); |
| 3547 | 3547 |
| 3548 EvacuationWeakObjectRetainer evacuation_object_retainer; | 3548 EvacuationWeakObjectRetainer evacuation_object_retainer; |
| 3549 heap()->ProcessWeakReferences(&evacuation_object_retainer); | 3549 heap()->ProcessAllWeakReferences(&evacuation_object_retainer); |
| 3550 | 3550 |
| 3551 // Visit invalidated code (we ignored all slots on it) and clear mark-bits | 3551 // Visit invalidated code (we ignored all slots on it) and clear mark-bits |
| 3552 // under it. | 3552 // under it. |
| 3553 ProcessInvalidatedCode(&updating_visitor); | 3553 ProcessInvalidatedCode(&updating_visitor); |
| 3554 | 3554 |
| 3555 heap_->isolate()->inner_pointer_to_code_cache()->Flush(); | 3555 heap_->isolate()->inner_pointer_to_code_cache()->Flush(); |
| 3556 | 3556 |
| 3557 slots_buffer_allocator_.DeallocateChain(&migration_slots_buffer_); | 3557 slots_buffer_allocator_.DeallocateChain(&migration_slots_buffer_); |
| 3558 DCHECK(migration_slots_buffer_ == NULL); | 3558 DCHECK(migration_slots_buffer_ == NULL); |
| 3559 } | 3559 } |
| (...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4403 SlotsBuffer* buffer = *buffer_address; | 4403 SlotsBuffer* buffer = *buffer_address; |
| 4404 while (buffer != NULL) { | 4404 while (buffer != NULL) { |
| 4405 SlotsBuffer* next_buffer = buffer->next(); | 4405 SlotsBuffer* next_buffer = buffer->next(); |
| 4406 DeallocateBuffer(buffer); | 4406 DeallocateBuffer(buffer); |
| 4407 buffer = next_buffer; | 4407 buffer = next_buffer; |
| 4408 } | 4408 } |
| 4409 *buffer_address = NULL; | 4409 *buffer_address = NULL; |
| 4410 } | 4410 } |
| 4411 } | 4411 } |
| 4412 } // namespace v8::internal | 4412 } // namespace v8::internal |
| OLD | NEW |