v8  3.25.30(node0.11.13)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MemoryChunk Class Reference

#include <spaces.h>

Inheritance diagram for MemoryChunk:
Collaboration diagram for MemoryChunk:

Public Types

enum  MemoryChunkFlags {
  IS_EXECUTABLE, ABOUT_TO_BE_FREED, POINTERS_TO_HERE_ARE_INTERESTING, POINTERS_FROM_HERE_ARE_INTERESTING,
  SCAN_ON_SCAVENGE, IN_FROM_SPACE, IN_TO_SPACE, NEW_SPACE_BELOW_AGE_MARK,
  CONTAINS_ONLY_DATA, EVACUATION_CANDIDATE, RESCAN_ON_EVACUATION, WAS_SWEPT_PRECISELY,
  WAS_SWEPT_CONSERVATIVELY, HAS_PROGRESS_BAR, NUM_MEMORY_CHUNK_FLAGS
}
 
enum  ParallelSweepingState { PARALLEL_SWEEPING_DONE, PARALLEL_SWEEPING_FINALIZE, PARALLEL_SWEEPING_IN_PROGRESS, PARALLEL_SWEEPING_PENDING }
 

Public Member Functions

Address address ()
 
bool is_valid ()
 
MemoryChunknext_chunk () const
 
MemoryChunkprev_chunk () const
 
void set_next_chunk (MemoryChunk *next)
 
void set_prev_chunk (MemoryChunk *prev)
 
Spaceowner () const
 
void set_owner (Space *space)
 
VirtualMemoryreserved_memory ()
 
void InitializeReservedMemory ()
 
void set_reserved_memory (VirtualMemory *reservation)
 
bool scan_on_scavenge ()
 
void initialize_scan_on_scavenge (bool scan)
 
void set_scan_on_scavenge (bool scan)
 
int store_buffer_counter ()
 
void set_store_buffer_counter (int counter)
 
bool Contains (Address addr)
 
bool ContainsLimit (Address addr)
 
void SetFlag (int flag)
 
void ClearFlag (int flag)
 
void SetFlagTo (int flag, bool value)
 
bool IsFlagSet (int flag)
 
void SetFlags (intptr_t flags, intptr_t mask)
 
intptr_t GetFlags ()
 
ParallelSweepingState parallel_sweeping ()
 
void set_parallel_sweeping (ParallelSweepingState state)
 
bool TryParallelSweeping ()
 
void ResetLiveBytes ()
 
void IncrementLiveBytes (int by)
 
int LiveBytes ()
 
int write_barrier_counter ()
 
void set_write_barrier_counter (int counter)
 
int progress_bar ()
 
void set_progress_bar (int progress_bar)
 
void ResetProgressBar ()
 
bool IsLeftOfProgressBar (Object **slot)
 
size_t size () const
 
void set_size (size_t size)
 
void SetArea (Address area_start, Address area_end)
 
Executability executable ()
 
bool ContainsOnlyData ()
 
bool InNewSpace ()
 
bool InToSpace ()
 
bool InFromSpace ()
 
Bitmapmarkbits ()
 
void PrintMarkbits ()
 
uint32_t AddressToMarkbitIndex (Address addr)
 
Address MarkbitIndexToAddress (uint32_t index)
 
void InsertAfter (MemoryChunk *other)
 
void Unlink ()
 
Heapheap ()
 
bool IsEvacuationCandidate ()
 
bool ShouldSkipEvacuationSlotRecording ()
 
SkipListskip_list ()
 
void set_skip_list (SkipList *skip_list)
 
SlotsBufferslots_buffer ()
 
SlotsBuffer ** slots_buffer_address ()
 
void MarkEvacuationCandidate ()
 
void ClearEvacuationCandidate ()
 
Address area_start ()
 
Address area_end ()
 
int area_size ()
 
bool CommitArea (size_t requested)
 
size_t CommittedPhysicalMemory ()
 

Static Public Member Functions

static MemoryChunkFromAddress (Address a)
 
static MemoryChunkFromAnyPointerAddress (Heap *heap, Address addr)
 
static void IncrementLiveBytesFromGC (Address address, int by)
 
static void IncrementLiveBytesFromMutator (Address address, int by)
 
static uint32_t FastAddressToMarkbitIndex (Address addr)
 
static void UpdateHighWaterMark (Address mark)
 

Static Public Attributes

static const int kWriteBarrierCounterGranularity = 500
 
static const int kPointersToHereAreInterestingMask
 
static const int kPointersFromHereAreInterestingMask
 
static const int kEvacuationCandidateMask
 
static const int kSkipEvacuationSlotsRecordingMask
 
static const intptr_t kAlignment
 
static const intptr_t kAlignmentMask = kAlignment - 1
 
static const intptr_t kSizeOffset = 0
 
static const intptr_t kLiveBytesOffset
 
static const size_t kSlotsBufferOffset = kLiveBytesOffset + kIntSize
 
static const size_t kWriteBarrierCounterOffset
 
static const size_t kHeaderSize
 
static const int kBodyOffset
 
static const int kObjectStartAlignment = 32 * kPointerSize
 
static const int kObjectStartOffset
 
static const int kFlagsOffset = kPointerSize
 

Static Protected Member Functions

static MemoryChunkInitialize (Heap *heap, Address base, size_t size, Address area_start, Address area_end, Executability executable, Space *owner)
 

Protected Attributes

size_t size_
 
intptr_t flags_
 
Address area_start_
 
Address area_end_
 
VirtualMemory reservation_
 
Address owner_
 
Heapheap_
 
int store_buffer_counter_
 
int live_byte_count_
 
SlotsBufferslots_buffer_
 
SkipListskip_list_
 
intptr_t write_barrier_counter_
 
int progress_bar_
 
int high_water_mark_
 
AtomicWord parallel_sweeping_
 
intptr_t available_in_small_free_list_
 
intptr_t available_in_medium_free_list_
 
intptr_t available_in_large_free_list_
 
intptr_t available_in_huge_free_list_
 
intptr_t non_available_small_blocks_
 

Friends

class MemoryAllocator
 

Detailed Description

Definition at line 302 of file spaces.h.

Member Enumeration Documentation

Enumerator
IS_EXECUTABLE 
ABOUT_TO_BE_FREED 
POINTERS_TO_HERE_ARE_INTERESTING 
POINTERS_FROM_HERE_ARE_INTERESTING 
SCAN_ON_SCAVENGE 
IN_FROM_SPACE 
IN_TO_SPACE 
NEW_SPACE_BELOW_AGE_MARK 
CONTAINS_ONLY_DATA 
EVACUATION_CANDIDATE 
RESCAN_ON_EVACUATION 
WAS_SWEPT_PRECISELY 
WAS_SWEPT_CONSERVATIVELY 
HAS_PROGRESS_BAR 
NUM_MEMORY_CHUNK_FLAGS 

Definition at line 393 of file spaces.h.

Enumerator
PARALLEL_SWEEPING_DONE 
PARALLEL_SWEEPING_FINALIZE 
PARALLEL_SWEEPING_IN_PROGRESS 
PARALLEL_SWEEPING_PENDING 

Definition at line 478 of file spaces.h.

Member Function Documentation

uint32_t AddressToMarkbitIndex ( Address  addr)
inline

Definition at line 635 of file spaces.h.

References MemoryChunk::address(), and v8::internal::kPointerSizeLog2.

size_t CommittedPhysicalMemory ( )
inline

Definition at line 697 of file spaces.h.

References MemoryChunk::high_water_mark_.

Referenced by LargeObjectSpace::CommittedPhysicalMemory().

bool ContainsLimit ( Address  addr)
inline
bool ContainsOnlyData ( )
inline

Definition at line 610 of file spaces.h.

References MemoryChunk::CONTAINS_ONLY_DATA, and MemoryChunk::IsFlagSet().

static uint32_t FastAddressToMarkbitIndex ( Address  addr)
inlinestatic

Definition at line 639 of file spaces.h.

References MemoryChunk::kAlignmentMask, and v8::internal::kPointerSizeLog2.

intptr_t GetFlags ( )
inline

Definition at line 468 of file spaces.h.

References MemoryChunk::flags_.

Referenced by SemiSpace::GrowTo(), and SemiSpace::Swap().

void IncrementLiveBytes ( int  by)
inline
void IncrementLiveBytesFromMutator ( Address  address,
int  by 
)
static
bool InFromSpace ( )
inline

Definition at line 622 of file spaces.h.

References MemoryChunk::IN_FROM_SPACE, and MemoryChunk::IsFlagSet().

void initialize_scan_on_scavenge ( bool  scan)
inline
void InitializeReservedMemory ( )
inline

Definition at line 353 of file spaces.h.

References MemoryChunk::reservation_, and VirtualMemory::Reset().

Referenced by MemoryChunk::Initialize().

bool InToSpace ( )
inline

Definition at line 618 of file spaces.h.

References MemoryChunk::IN_TO_SPACE, and MemoryChunk::IsFlagSet().

bool is_valid ( )
inline
bool IsLeftOfProgressBar ( Object **  slot)
inline
Address MarkbitIndexToAddress ( uint32_t  index)
inline

Definition at line 646 of file spaces.h.

References MemoryChunk::address(), and v8::internal::kPointerSizeLog2.

Bitmap* markbits ( )
inline

Definition at line 629 of file spaces.h.

References MemoryChunk::address(), and MemoryChunk::kHeaderSize.

Referenced by Bitmap::Clear(), and MemoryChunk::PrintMarkbits().

void MarkEvacuationCandidate ( )
inline
ParallelSweepingState parallel_sweeping ( )
inline

Definition at line 485 of file spaces.h.

References v8::internal::Acquire_Load(), and MemoryChunk::parallel_sweeping_.

Referenced by Heap::CanMoveObjectStart().

MemoryChunk* prev_chunk ( ) const
inline
void PrintMarkbits ( )
inline

Definition at line 633 of file spaces.h.

References MemoryChunk::markbits(), and Bitmap::Print().

VirtualMemory* reserved_memory ( )
inline

Definition at line 349 of file spaces.h.

References MemoryChunk::reservation_.

Referenced by MemoryAllocator::Free().

void ResetLiveBytes ( )
inline
void ResetProgressBar ( )
inline
void set_owner ( Space space)
inline
void set_parallel_sweeping ( ParallelSweepingState  state)
inline
void set_prev_chunk ( MemoryChunk prev)
inline
void set_reserved_memory ( VirtualMemory reservation)
inline
void set_size ( size_t  size)
inline

Definition at line 597 of file spaces.h.

References MemoryChunk::size(), and MemoryChunk::size_.

Referenced by Heap::FreeQueuedChunks().

void set_skip_list ( SkipList skip_list)
inline

Definition at line 667 of file spaces.h.

References MemoryChunk::skip_list(), and MemoryChunk::skip_list_.

Referenced by SkipList::Update().

void set_store_buffer_counter ( int  counter)
inline

Definition at line 373 of file spaces.h.

References MemoryChunk::store_buffer_counter_.

void set_write_barrier_counter ( int  counter)
inline

Definition at line 529 of file spaces.h.

References MemoryChunk::write_barrier_counter_.

Referenced by IncrementalMarking::RecordWriteFromCode().

void SetArea ( Address  area_start,
Address  area_end 
)
inline
void SetFlags ( intptr_t  flags,
intptr_t  mask 
)
inline

Definition at line 463 of file spaces.h.

References MemoryChunk::flags_.

Referenced by SemiSpace::GrowTo().

void SetFlagTo ( int  flag,
bool  value 
)
inline

Definition at line 448 of file spaces.h.

References MemoryChunk::ClearFlag(), and MemoryChunk::SetFlag().

bool ShouldSkipEvacuationSlotRecording ( )
inline
SlotsBuffer* slots_buffer ( )
inline

Definition at line 671 of file spaces.h.

References MemoryChunk::slots_buffer_.

Referenced by MemoryAllocator::Free().

int store_buffer_counter ( )
inline

Definition at line 372 of file spaces.h.

References MemoryChunk::store_buffer_counter_.

int write_barrier_counter ( )
inline

Definition at line 525 of file spaces.h.

References MemoryChunk::write_barrier_counter_.

Referenced by IncrementalMarking::RecordWriteFromCode().

Friends And Related Function Documentation

friend class MemoryAllocator
friend

Definition at line 756 of file spaces.h.

Field Documentation

Address area_end_
protected
Address area_start_
protected
intptr_t available_in_huge_free_list_
protected

Definition at line 739 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and Page::ResetFreeListStatistics().

intptr_t available_in_large_free_list_
protected

Definition at line 738 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and Page::ResetFreeListStatistics().

intptr_t available_in_medium_free_list_
protected

Definition at line 737 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and Page::ResetFreeListStatistics().

intptr_t available_in_small_free_list_
protected

Definition at line 736 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and Page::ResetFreeListStatistics().

int high_water_mark_
protected
const intptr_t kAlignmentMask = kAlignment - 1
static

Definition at line 566 of file spaces.h.

Referenced by MemoryChunk::FastAddressToMarkbitIndex(), and MemoryChunk::FromAddress().

const int kBodyOffset
static
Initial value:

Definition at line 585 of file spaces.h.

Referenced by PromotionQueue::Initialize().

const int kEvacuationCandidateMask
static
Initial value:

Definition at line 430 of file spaces.h.

const int kFlagsOffset = kPointerSize
static

Definition at line 655 of file spaces.h.

Referenced by MemoryChunk::Initialize().

const size_t kHeaderSize
static
const intptr_t kLiveBytesOffset
static
const int kObjectStartAlignment = 32 * kPointerSize
static

Definition at line 591 of file spaces.h.

const int kPointersFromHereAreInterestingMask
static
Initial value:

Definition at line 427 of file spaces.h.

const int kPointersToHereAreInterestingMask
static
Initial value:

Definition at line 424 of file spaces.h.

const intptr_t kSizeOffset = 0
static

Definition at line 568 of file spaces.h.

const int kSkipEvacuationSlotsRecordingMask
static
Initial value:

Definition at line 433 of file spaces.h.

Referenced by MemoryChunk::ShouldSkipEvacuationSlotRecording().

const size_t kSlotsBufferOffset = kLiveBytesOffset + kIntSize
static

Definition at line 575 of file spaces.h.

const int kWriteBarrierCounterGranularity = 500
static

Definition at line 391 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and IncrementalMarking::RecordWriteFromCode().

const size_t kWriteBarrierCounterOffset
static
Initial value:

Definition at line 577 of file spaces.h.

int live_byte_count_
protected
intptr_t non_available_small_blocks_
protected

Definition at line 740 of file spaces.h.

Referenced by MemoryChunk::Initialize(), and Page::ResetFreeListStatistics().

Address owner_
protected

Definition at line 716 of file spaces.h.

Referenced by MemoryChunk::owner(), and MemoryChunk::set_owner().

AtomicWord parallel_sweeping_
protected
int progress_bar_
protected
SkipList* skip_list_
protected
int store_buffer_counter_
protected
intptr_t write_barrier_counter_
protected

The documentation for this class was generated from the following files: