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 <unordered_map> | 7 #include <unordered_map> |
8 #include <unordered_set> | 8 #include <unordered_set> |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 3463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3474 AllocationSite* allocation_site) { | 3474 AllocationSite* allocation_site) { |
3475 DCHECK(gc_state_ == NOT_IN_GC); | 3475 DCHECK(gc_state_ == NOT_IN_GC); |
3476 DCHECK(map->instance_type() != MAP_TYPE); | 3476 DCHECK(map->instance_type() != MAP_TYPE); |
3477 int size = map->instance_size(); | 3477 int size = map->instance_size(); |
3478 if (allocation_site != NULL) { | 3478 if (allocation_site != NULL) { |
3479 size += AllocationMemento::kSize; | 3479 size += AllocationMemento::kSize; |
3480 } | 3480 } |
3481 HeapObject* result = nullptr; | 3481 HeapObject* result = nullptr; |
3482 AllocationResult allocation = AllocateRaw(size, space); | 3482 AllocationResult allocation = AllocateRaw(size, space); |
3483 if (!allocation.To(&result)) return allocation; | 3483 if (!allocation.To(&result)) return allocation; |
3484 // No need for write barrier since object is white and map is in old space. | 3484 // New space objects are allocated white. |
3485 result->set_map_after_allocation(map, SKIP_WRITE_BARRIER); | 3485 WriteBarrierMode write_barrier_mode = |
| 3486 space == NEW_SPACE ? SKIP_WRITE_BARRIER : UPDATE_WRITE_BARRIER; |
| 3487 result->set_map_after_allocation(map, write_barrier_mode); |
3486 if (allocation_site != NULL) { | 3488 if (allocation_site != NULL) { |
3487 AllocationMemento* alloc_memento = reinterpret_cast<AllocationMemento*>( | 3489 AllocationMemento* alloc_memento = reinterpret_cast<AllocationMemento*>( |
3488 reinterpret_cast<Address>(result) + map->instance_size()); | 3490 reinterpret_cast<Address>(result) + map->instance_size()); |
3489 InitializeAllocationMemento(alloc_memento, allocation_site); | 3491 InitializeAllocationMemento(alloc_memento, allocation_site); |
3490 } | 3492 } |
3491 return result; | 3493 return result; |
3492 } | 3494 } |
3493 | 3495 |
3494 | 3496 |
3495 void Heap::InitializeJSObjectFromMap(JSObject* obj, FixedArray* properties, | 3497 void Heap::InitializeJSObjectFromMap(JSObject* obj, FixedArray* properties, |
(...skipping 3076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6572 case LO_SPACE: | 6574 case LO_SPACE: |
6573 return "LO_SPACE"; | 6575 return "LO_SPACE"; |
6574 default: | 6576 default: |
6575 UNREACHABLE(); | 6577 UNREACHABLE(); |
6576 } | 6578 } |
6577 return NULL; | 6579 return NULL; |
6578 } | 6580 } |
6579 | 6581 |
6580 } // namespace internal | 6582 } // namespace internal |
6581 } // namespace v8 | 6583 } // namespace v8 |
OLD | NEW |