| 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 "src/heap/store-buffer.h" | 5 #include "src/heap/store-buffer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 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 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 slot_callback); | 487 slot_callback); |
| 488 break; | 488 break; |
| 489 } | 489 } |
| 490 | 490 |
| 491 case HeapObjectContents::kMixedValues: { | 491 case HeapObjectContents::kMixedValues: { |
| 492 if (heap_object->IsFixedTypedArrayBase()) { | 492 if (heap_object->IsFixedTypedArrayBase()) { |
| 493 FindPointersToNewSpaceInRegion( | 493 FindPointersToNewSpaceInRegion( |
| 494 obj_address + FixedTypedArrayBase::kBasePointerOffset, | 494 obj_address + FixedTypedArrayBase::kBasePointerOffset, |
| 495 obj_address + FixedTypedArrayBase::kHeaderSize, | 495 obj_address + FixedTypedArrayBase::kHeaderSize, |
| 496 slot_callback); | 496 slot_callback); |
| 497 } else if (heap_object->IsBytecodeArray()) { |
| 498 FindPointersToNewSpaceInRegion( |
| 499 obj_address + BytecodeArray::kConstantPoolOffset, |
| 500 obj_address + BytecodeArray::kHeaderSize, |
| 501 slot_callback); |
| 497 } else if (FLAG_unbox_double_fields) { | 502 } else if (FLAG_unbox_double_fields) { |
| 498 LayoutDescriptorHelper helper(heap_object->map()); | 503 LayoutDescriptorHelper helper(heap_object->map()); |
| 499 DCHECK(!helper.all_fields_tagged()); | 504 DCHECK(!helper.all_fields_tagged()); |
| 500 for (int offset = start_offset; offset < end_offset;) { | 505 for (int offset = start_offset; offset < end_offset;) { |
| 501 int end_of_region_offset; | 506 int end_of_region_offset; |
| 502 if (helper.IsTagged(offset, end_offset, | 507 if (helper.IsTagged(offset, end_offset, |
| 503 &end_of_region_offset)) { | 508 &end_of_region_offset)) { |
| 504 FindPointersToNewSpaceInRegion( | 509 FindPointersToNewSpaceInRegion( |
| 505 obj_address + offset, | 510 obj_address + offset, |
| 506 obj_address + end_of_region_offset, slot_callback); | 511 obj_address + end_of_region_offset, slot_callback); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 DCHECK(start_of_current_page_ != store_buffer_->Top()); | 629 DCHECK(start_of_current_page_ != store_buffer_->Top()); |
| 625 store_buffer_->SetTop(start_of_current_page_); | 630 store_buffer_->SetTop(start_of_current_page_); |
| 626 } | 631 } |
| 627 } else { | 632 } else { |
| 628 UNREACHABLE(); | 633 UNREACHABLE(); |
| 629 } | 634 } |
| 630 } | 635 } |
| 631 | 636 |
| 632 } // namespace internal | 637 } // namespace internal |
| 633 } // namespace v8 | 638 } // namespace v8 |
| OLD | NEW |