V8 Project
|
#include <mark-compact.h>
Public Types | |
enum | SlotType { EMBEDDED_OBJECT_SLOT , RELOCATED_CODE_OBJECT , CODE_TARGET_SLOT , CODE_ENTRY_SLOT , DEBUG_TARGET_SLOT , JS_RETURN_SLOT , NUMBER_OF_SLOT_TYPES } |
enum | AdditionMode { FAIL_ON_OVERFLOW , IGNORE_OVERFLOW } |
typedef Object ** | ObjectSlot |
Public Member Functions | |
SlotsBuffer (SlotsBuffer *next_buffer) | |
~SlotsBuffer () | |
void | Add (ObjectSlot slot) |
void | UpdateSlots (Heap *heap) |
void | UpdateSlotsWithFilter (Heap *heap) |
SlotsBuffer * | next () |
bool | IsFull () |
bool | HasSpaceForTypedSlot () |
INLINE (static bool AddTo(SlotsBufferAllocator *allocator, SlotsBuffer **buffer_address, ObjectSlot slot, AdditionMode mode)) | |
Static Public Member Functions | |
static const char * | SlotTypeToString (SlotType type) |
static int | SizeOfChain (SlotsBuffer *buffer) |
static void | UpdateSlotsRecordedIn (Heap *heap, SlotsBuffer *buffer, bool code_slots_filtering_required) |
static bool | ChainLengthThresholdReached (SlotsBuffer *buffer) |
static bool | IsTypedSlot (ObjectSlot slot) |
static bool | AddTo (SlotsBufferAllocator *allocator, SlotsBuffer **buffer_address, SlotType type, Address addr, AdditionMode mode) |
Static Public Attributes | |
static const int | kNumberOfElements = 1021 |
Private Attributes | |
intptr_t | idx_ |
intptr_t | chain_length_ |
SlotsBuffer * | next_ |
ObjectSlot | slots_ [kNumberOfElements] |
Static Private Attributes | |
static const int | kChainLengthThreshold = 15 |
Definition at line 250 of file mark-compact.h.
typedef Object** v8::internal::SlotsBuffer::ObjectSlot |
Definition at line 252 of file mark-compact.h.
Enumerator | |
---|---|
EMBEDDED_OBJECT_SLOT | |
RELOCATED_CODE_OBJECT | |
CODE_TARGET_SLOT | |
CODE_ENTRY_SLOT | |
DEBUG_TARGET_SLOT | |
JS_RETURN_SLOT | |
NUMBER_OF_SLOT_TYPES |
Definition at line 268 of file mark-compact.h.
|
inlineexplicit |
Definition at line 254 of file mark-compact.h.
References chain_length_, next_, and NULL.
|
inline |
Definition at line 261 of file mark-compact.h.
|
inline |
Definition at line 263 of file mark-compact.h.
References DCHECK, idx_, kNumberOfElements, and slots_.
Referenced by AddTo(), and INLINE().
|
static |
Definition at line 4403 of file mark-compact.cc.
References Add(), v8::internal::SlotsBufferAllocator::AllocateBuffer(), ChainLengthThresholdReached(), DCHECK, v8::internal::SlotsBufferAllocator::DeallocateChain(), FAIL_ON_OVERFLOW, HasSpaceForTypedSlot(), mode(), and NULL.
Referenced by v8::internal::MarkCompactCollector::MigrateObject(), v8::internal::MarkCompactCollector::RecordCodeEntrySlot(), v8::internal::MarkCompactCollector::RecordMigratedSlot(), and v8::internal::MarkCompactCollector::RecordRelocSlot().
|
inlinestatic |
Definition at line 328 of file mark-compact.h.
References chain_length_, kChainLengthThreshold, and NULL.
Referenced by AddTo(), and INLINE().
|
inline |
Definition at line 312 of file mark-compact.h.
References idx_, and kNumberOfElements.
Referenced by AddTo().
|
inline |
Definition at line 332 of file mark-compact.h.
References Add(), v8::internal::SlotsBufferAllocator::AllocateBuffer(), ChainLengthThresholdReached(), v8::internal::SlotsBufferAllocator::DeallocateChain(), FAIL_ON_OVERFLOW, IsFull(), mode(), and NULL.
|
inline |
Definition at line 310 of file mark-compact.h.
References idx_, and kNumberOfElements.
Referenced by INLINE().
|
static |
Definition at line 4398 of file mark-compact.cc.
References NUMBER_OF_SLOT_TYPES.
Referenced by UpdateSlots(), and UpdateSlotsWithFilter().
|
inline |
Definition at line 302 of file mark-compact.h.
References next_.
Referenced by v8::internal::SlotsBufferAllocator::DeallocateChain(), and UpdateSlotsRecordedIn().
|
inlinestatic |
Definition at line 304 of file mark-compact.h.
References chain_length_, idx_, kNumberOfElements, and NULL.
Referenced by v8::internal::MarkCompactCollector::EvacuateNewSpaceAndCandidates().
|
inlinestatic |
Definition at line 278 of file mark-compact.h.
References CODE_ENTRY_SLOT, CODE_TARGET_SLOT, DEBUG_TARGET_SLOT, EMBEDDED_OBJECT_SLOT, JS_RETURN_SLOT, NUMBER_OF_SLOT_TYPES, and RELOCATED_CODE_OBJECT.
void v8::internal::SlotsBuffer::UpdateSlots | ( | Heap * | heap | ) |
Definition at line 4503 of file mark-compact.cc.
References DCHECK, v8::internal::DecodeSlotType(), idx_, v8::internal::Heap::isolate(), IsTypedSlot(), slots_, v8::internal::PointersUpdatingVisitor::UpdateSlot(), and v8::internal::UpdateSlot().
Referenced by UpdateSlotsRecordedIn().
|
inlinestatic |
Definition at line 314 of file mark-compact.h.
References next(), NULL, UpdateSlots(), and UpdateSlotsWithFilter().
Referenced by v8::internal::MarkCompactCollector::EvacuateNewSpaceAndCandidates().
void v8::internal::SlotsBuffer::UpdateSlotsWithFilter | ( | Heap * | heap | ) |
Definition at line 4520 of file mark-compact.cc.
References DCHECK, v8::internal::DecodeSlotType(), idx_, v8::internal::Heap::isolate(), v8::internal::IsOnInvalidatedCodeObject(), IsTypedSlot(), v8::internal::pc, slots_, v8::internal::PointersUpdatingVisitor::UpdateSlot(), and v8::internal::UpdateSlot().
Referenced by UpdateSlotsRecordedIn().
|
private |
Definition at line 360 of file mark-compact.h.
Referenced by ChainLengthThresholdReached(), SizeOfChain(), and SlotsBuffer().
|
private |
Definition at line 359 of file mark-compact.h.
Referenced by Add(), HasSpaceForTypedSlot(), IsFull(), SizeOfChain(), UpdateSlots(), and UpdateSlotsWithFilter().
|
staticprivate |
Definition at line 357 of file mark-compact.h.
Referenced by ChainLengthThresholdReached().
|
static |
Definition at line 354 of file mark-compact.h.
Referenced by Add(), HasSpaceForTypedSlot(), IsFull(), and SizeOfChain().
|
private |
Definition at line 361 of file mark-compact.h.
Referenced by next(), and SlotsBuffer().
|
private |
Definition at line 362 of file mark-compact.h.
Referenced by Add(), UpdateSlots(), and UpdateSlotsWithFilter().