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 |