OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/slots-buffer.h" | 5 #include "src/heap/slots-buffer.h" |
6 | 6 |
7 #include "src/assembler.h" | 7 #include "src/assembler.h" |
8 #include "src/heap/heap.h" | 8 #include "src/heap/heap.h" |
9 #include "src/objects-inl.h" | 9 #include "src/objects-inl.h" |
10 | 10 |
11 namespace v8 { | 11 namespace v8 { |
12 namespace internal { | 12 namespace internal { |
13 | 13 |
14 bool SlotsBuffer::IsTypedSlot(ObjectSlot slot) { | 14 bool SlotsBuffer::IsTypedSlot(ObjectSlot slot) { |
15 return reinterpret_cast<uintptr_t>(slot) < NUMBER_OF_SLOT_TYPES; | 15 return reinterpret_cast<uintptr_t>(slot) < NUMBER_OF_SLOT_TYPES; |
16 } | 16 } |
17 | 17 |
18 | 18 |
19 bool SlotsBuffer::AddToSynchronized(SlotsBufferAllocator* allocator, | |
20 SlotsBuffer** buffer_address, | |
21 base::Mutex* buffer_mutex, SlotType type, | |
22 Address addr, AdditionMode mode) { | |
23 base::LockGuard<base::Mutex> lock_guard(buffer_mutex); | |
24 return AddTo(allocator, buffer_address, type, addr, mode); | |
25 } | |
26 | |
27 | |
28 bool SlotsBuffer::AddTo(SlotsBufferAllocator* allocator, | 19 bool SlotsBuffer::AddTo(SlotsBufferAllocator* allocator, |
29 SlotsBuffer** buffer_address, SlotType type, | 20 SlotsBuffer** buffer_address, SlotType type, |
30 Address addr, AdditionMode mode) { | 21 Address addr, AdditionMode mode) { |
31 SlotsBuffer* buffer = *buffer_address; | 22 SlotsBuffer* buffer = *buffer_address; |
32 if (buffer == NULL || !buffer->HasSpaceForTypedSlot()) { | 23 if (buffer == NULL || !buffer->HasSpaceForTypedSlot()) { |
33 if (mode == FAIL_ON_OVERFLOW && ChainLengthThresholdReached(buffer)) { | 24 if (mode == FAIL_ON_OVERFLOW && ChainLengthThresholdReached(buffer)) { |
34 allocator->DeallocateChain(buffer_address); | 25 allocator->DeallocateChain(buffer_address); |
35 return false; | 26 return false; |
36 } | 27 } |
37 buffer = allocator->AllocateBuffer(buffer); | 28 buffer = allocator->AllocateBuffer(buffer); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 while (buffer != NULL) { | 152 while (buffer != NULL) { |
162 SlotsBuffer* next_buffer = buffer->next(); | 153 SlotsBuffer* next_buffer = buffer->next(); |
163 DeallocateBuffer(buffer); | 154 DeallocateBuffer(buffer); |
164 buffer = next_buffer; | 155 buffer = next_buffer; |
165 } | 156 } |
166 *buffer_address = NULL; | 157 *buffer_address = NULL; |
167 } | 158 } |
168 | 159 |
169 } // namespace internal | 160 } // namespace internal |
170 } // namespace v8 | 161 } // namespace v8 |
OLD | NEW |