v8
3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
|
#include <store-buffer.h>
Public Member Functions | |
StoreBuffer (Heap *heap) | |
Address | TopAddress () |
void | SetUp () |
void | TearDown () |
void | Mark (Address addr) |
void | EnterDirectlyIntoStoreBuffer (Address addr) |
void | IteratePointersToNewSpace (ObjectSlotCallback callback) |
void | Compact () |
void | GCPrologue () |
void | GCEpilogue () |
Object *** | Limit () |
Object *** | Start () |
Object *** | Top () |
void | SetTop (Object ***top) |
bool | old_buffer_is_sorted () |
bool | old_buffer_is_filtered () |
void | SortUniq () |
void | EnsureSpace (intptr_t space_needed) |
void | Verify () |
bool | PrepareForIteration () |
void | Filter (int flag) |
Static Public Member Functions | |
static void | StoreBufferOverflow (Isolate *isolate) |
Static Public Attributes | |
static const int | kStoreBufferOverflowBit = 1 << (14 + kPointerSizeLog2) |
static const int | kStoreBufferSize = kStoreBufferOverflowBit |
static const int | kStoreBufferLength = kStoreBufferSize / sizeof(Address) |
static const int | kOldStoreBufferLength = kStoreBufferLength * 16 |
static const int | kHashSetLengthLog2 = 12 |
static const int | kHashSetLength = 1 << kHashSetLengthLog2 |
Friends | |
class | StoreBufferRebuildScope |
class | DontMoveStoreBufferEntriesScope |
Definition at line 49 of file store-buffer.h.
|
explicit |
Definition at line 37 of file store-buffer.cc.
void Compact | ( | ) |
Definition at line 667 of file store-buffer.cc.
References ASSERT, Heap::cell_space(), Heap::code_space(), PagedSpace::Contains(), Isolate::counters(), StoreBuffer::EnsureSpace(), Heap::isolate(), StoreBuffer::kHashSetLength, StoreBuffer::kHashSetLengthLog2, v8::internal::kPointerSizeLog2, Heap::old_data_space(), and Heap::public_set_store_buffer_top().
Referenced by StoreBuffer::EnsureSpace(), Heap::FreeQueuedChunks(), StoreBuffer::Mark(), StoreBuffer::PrepareForIteration(), StoreBuffer::SortUniq(), and StoreBuffer::StoreBufferOverflow().
void EnsureSpace | ( | intptr_t | space_needed | ) |
Definition at line 170 of file store-buffer.cc.
References ASSERT, CHECK, VirtualMemory::Commit(), StoreBuffer::Compact(), StoreBuffer::Filter(), Page::kPageSize, v8::internal::kPointerSize, v8::internal::NULL, MemoryChunk::scan_on_scavenge(), MemoryChunk::SCAN_ON_SCAVENGE, and UNREACHABLE.
Referenced by StoreBufferRebuilder::Callback(), and StoreBuffer::Compact().
|
inline |
Definition at line 56 of file store-buffer-inl.h.
References ASSERT, Heap::cell_space(), Heap::code_space(), PagedSpace::Contains(), NewSpace::Contains(), MemoryChunk::FromAnyPointerAddress(), v8::internal::kStoreBufferFullEvent, Heap::new_space(), v8::internal::NULL, Heap::old_data_space(), and SLOW_ASSERT.
Referenced by Heap::IterateAndMarkPointersToFromSpace().
void Filter | ( | int | flag | ) |
Definition at line 259 of file store-buffer.cc.
References MemoryChunk::Contains(), MemoryChunk::FromAnyPointerAddress(), MemoryChunk::IsFlagSet(), and v8::internal::NULL.
Referenced by StoreBuffer::EnsureSpace(), Heap::FreeQueuedChunks(), and StoreBuffer::PrepareForIteration().
void GCEpilogue | ( | ) |
Definition at line 428 of file store-buffer.cc.
References StoreBuffer::Verify().
Referenced by Heap::GarbageCollectionEpilogue().
void GCPrologue | ( | ) |
Definition at line 369 of file store-buffer.cc.
Referenced by Heap::GarbageCollectionPrologue().
void IteratePointersToNewSpace | ( | ObjectSlotCallback | callback | ) |
Definition at line 608 of file store-buffer.cc.
References HeapObject::address(), ASSERT, LargePage::GetObject(), v8::internal::kStoreBufferScanningPageEvent, v8::internal::kStoreBufferStartScanningPagesEvent, Heap::lo_space(), Heap::map_space(), v8::internal::NULL, MemoryChunk::owner(), StoreBuffer::PrepareForIteration(), MemoryChunk::scan_on_scavenge(), MemoryChunk::set_scan_on_scavenge(), and HeapObject::Size().
|
inline |
Definition at line 96 of file store-buffer.h.
Referenced by StoreBufferRebuilder::Callback(), and StoreBuffer::SetTop().
|
inline |
Definition at line 41 of file store-buffer-inl.h.
References ASSERT, Heap::cell_space(), Heap::code_space(), StoreBuffer::Compact(), PagedSpace::Contains(), StoreBuffer::kStoreBufferOverflowBit, and Heap::public_set_store_buffer_top().
Referenced by MarkCompactCollector::MigrateObject(), Heap::RecordWrite(), and Heap::RecordWrites().
|
inline |
Definition at line 106 of file store-buffer.h.
|
inline |
Definition at line 105 of file store-buffer.h.
bool PrepareForIteration | ( | ) |
Definition at line 300 of file store-buffer.cc.
References StoreBuffer::Compact(), StoreBuffer::Filter(), v8::internal::NULL, MemoryChunk::scan_on_scavenge(), and MemoryChunk::SCAN_ON_SCAVENGE.
Referenced by StoreBuffer::IteratePointersToNewSpace().
|
inline |
Definition at line 99 of file store-buffer.h.
References ASSERT, StoreBuffer::Limit(), and StoreBuffer::Start().
Referenced by StoreBufferRebuilder::Callback().
void SetUp | ( | ) |
Definition at line 58 of file store-buffer.cc.
References VirtualMemory::address(), ASSERT, CHECK, VirtualMemory::Commit(), OS::CommitPageSize(), StoreBuffer::kHashSetLength, StoreBuffer::kOldStoreBufferLength, v8::internal::kPointerSize, StoreBuffer::kStoreBufferOverflowBit, StoreBuffer::kStoreBufferSize, Heap::public_set_store_buffer_top(), v8::internal::RoundUp(), VirtualMemory::size(), and v8::internal::USE().
Referenced by Heap::SetUp().
void SortUniq | ( | ) |
Definition at line 283 of file store-buffer.cc.
References StoreBuffer::Compact().
|
inline |
Definition at line 97 of file store-buffer.h.
Referenced by StoreBuffer::SetTop().
|
static |
Definition at line 120 of file store-buffer.cc.
References StoreBuffer::Compact(), Isolate::heap(), and Heap::store_buffer().
void TearDown | ( | ) |
Definition at line 109 of file store-buffer.cc.
References v8::internal::NULL, and Heap::public_set_store_buffer_top().
Referenced by Heap::TearDown().
|
inline |
Definition at line 98 of file store-buffer.h.
Referenced by StoreBufferRebuilder::Callback().
|
inline |
Definition at line 36 of file store-buffer-inl.h.
References Heap::store_buffer_top_address().
Referenced by Serializer::VisitPointers().
void Verify | ( | ) |
Definition at line 417 of file store-buffer.cc.
References Heap::lo_space(), Heap::map_space(), and Heap::old_pointer_space().
Referenced by StoreBuffer::GCEpilogue().
|
friend |
Definition at line 204 of file store-buffer.h.
|
friend |
Definition at line 203 of file store-buffer.h.
|
static |
Definition at line 89 of file store-buffer.h.
Referenced by StoreBuffer::Compact(), and StoreBuffer::SetUp().
|
static |
Definition at line 88 of file store-buffer.h.
Referenced by StoreBuffer::Compact().
|
static |
Definition at line 87 of file store-buffer.h.
Referenced by StoreBuffer::SetUp().
|
static |
Definition at line 86 of file store-buffer.h.
|
static |
Definition at line 84 of file store-buffer.h.
Referenced by StoreBuffer::Mark(), and StoreBuffer::SetUp().
|
static |
Definition at line 85 of file store-buffer.h.
Referenced by StoreBufferRebuilder::Callback(), and StoreBuffer::SetUp().