| OLD | NEW | 
|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 <algorithm> | 5 #include <algorithm> | 
| 6 | 6 | 
| 7 #include "src/v8.h" | 7 #include "src/v8.h" | 
| 8 | 8 | 
| 9 #include "src/counters.h" | 9 #include "src/counters.h" | 
| 10 #include "src/heap/store-buffer-inl.h" | 10 #include "src/heap/store-buffer-inl.h" | 
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 461               // We skip free space objects. | 461               // We skip free space objects. | 
| 462               if (!heap_object->IsFiller()) { | 462               if (!heap_object->IsFiller()) { | 
| 463                 DCHECK(heap_object->IsMap()); | 463                 DCHECK(heap_object->IsMap()); | 
| 464                 FindPointersToNewSpaceInRegion( | 464                 FindPointersToNewSpaceInRegion( | 
| 465                     heap_object->address() + Map::kPointerFieldsBeginOffset, | 465                     heap_object->address() + Map::kPointerFieldsBeginOffset, | 
| 466                     heap_object->address() + Map::kPointerFieldsEndOffset, | 466                     heap_object->address() + Map::kPointerFieldsEndOffset, | 
| 467                     slot_callback); | 467                     slot_callback); | 
| 468               } | 468               } | 
| 469             } | 469             } | 
| 470           } else { | 470           } else { | 
|  | 471             if (!page->SweepingCompleted()) { | 
|  | 472               heap_->mark_compact_collector()->SweepInParallel(page, owner); | 
|  | 473               if (!page->SweepingCompleted()) { | 
|  | 474                 // We were not able to sweep that page, i.e., a concurrent | 
|  | 475                 // sweeper thread currently owns this page. | 
|  | 476                 // TODO(hpayer): This may introduce a huge pause here. We | 
|  | 477                 // just care about finish sweeping of the scan on scavenge page. | 
|  | 478                 heap_->mark_compact_collector()->EnsureSweepingCompleted(); | 
|  | 479               } | 
|  | 480             } | 
| 471             CHECK(page->owner() == heap_->old_space()); | 481             CHECK(page->owner() == heap_->old_space()); | 
| 472             heap_->mark_compact_collector()->EnsureSweepingCompleted(page, |  | 
| 473                                                                      owner); |  | 
| 474             HeapObjectIterator iterator(page, NULL); | 482             HeapObjectIterator iterator(page, NULL); | 
| 475             for (HeapObject* heap_object = iterator.Next(); heap_object != NULL; | 483             for (HeapObject* heap_object = iterator.Next(); heap_object != NULL; | 
| 476                  heap_object = iterator.Next()) { | 484                  heap_object = iterator.Next()) { | 
| 477               // We iterate over objects that contain new space pointers only. | 485               // We iterate over objects that contain new space pointers only. | 
| 478               Address obj_address = heap_object->address(); | 486               Address obj_address = heap_object->address(); | 
| 479               const int start_offset = HeapObject::kHeaderSize; | 487               const int start_offset = HeapObject::kHeaderSize; | 
| 480               const int end_offset = heap_object->Size(); | 488               const int end_offset = heap_object->Size(); | 
| 481 | 489 | 
| 482               switch (heap_object->ContentType()) { | 490               switch (heap_object->ContentType()) { | 
| 483                 case HeapObjectContents::kTaggedValues: { | 491                 case HeapObjectContents::kTaggedValues: { | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 577     } | 585     } | 
| 578     old_buffer_is_sorted_ = false; | 586     old_buffer_is_sorted_ = false; | 
| 579     old_buffer_is_filtered_ = false; | 587     old_buffer_is_filtered_ = false; | 
| 580     *old_top_++ = reinterpret_cast<Address>(int_addr << kPointerSizeLog2); | 588     *old_top_++ = reinterpret_cast<Address>(int_addr << kPointerSizeLog2); | 
| 581     DCHECK(old_top_ <= old_limit_); | 589     DCHECK(old_top_ <= old_limit_); | 
| 582   } | 590   } | 
| 583   heap_->isolate()->counters()->store_buffer_compactions()->Increment(); | 591   heap_->isolate()->counters()->store_buffer_compactions()->Increment(); | 
| 584 } | 592 } | 
| 585 }  // namespace internal | 593 }  // namespace internal | 
| 586 }  // namespace v8 | 594 }  // namespace v8 | 
| OLD | NEW | 
|---|