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
IncrementalMarking Class Reference

#include <incremental-marking.h>

Public Types

enum  State { STOPPED, SWEEPING, MARKING, COMPLETE }
 
enum  CompletionAction { GC_VIA_STACK_GUARD, NO_GC_VIA_STACK_GUARD }
 
enum  CompactionFlag { ALLOW_COMPACTION, PREVENT_COMPACTION }
 

Public Member Functions

 IncrementalMarking (Heap *heap)
 
void TearDown ()
 
State state ()
 
bool should_hurry ()
 
void set_should_hurry (bool val)
 
bool IsStopped ()
 
 INLINE (bool IsMarking())
 
bool IsMarkingIncomplete ()
 
bool IsComplete ()
 
bool WorthActivating ()
 
void Start (CompactionFlag flag=ALLOW_COMPACTION)
 
void Stop ()
 
void PrepareForScavenge ()
 
void UpdateMarkingDequeAfterScavenge ()
 
void Hurry ()
 
void Finalize ()
 
void Abort ()
 
void MarkingComplete (CompletionAction action)
 
void OldSpaceStep (intptr_t allocated)
 
void Step (intptr_t allocated, CompletionAction action)
 
void RestartIfNotMarking ()
 
 INLINE (bool BaseRecordWrite(HeapObject *obj, Object **slot, Object *value))
 
 INLINE (void RecordWrite(HeapObject *obj, Object **slot, Object *value))
 
 INLINE (void RecordWriteIntoCode(HeapObject *obj, RelocInfo *rinfo, Object *value))
 
 INLINE (void RecordWriteOfCodeEntry(JSFunction *host, Object **slot, Code *value))
 
void RecordWriteSlow (HeapObject *obj, Object **slot, Object *value)
 
void RecordWriteIntoCodeSlow (HeapObject *obj, RelocInfo *rinfo, Object *value)
 
void RecordWriteOfCodeEntrySlow (JSFunction *host, Object **slot, Code *value)
 
void RecordCodeTargetPatch (Code *host, Address pc, HeapObject *value)
 
void RecordCodeTargetPatch (Address pc, HeapObject *value)
 
void RecordWrites (HeapObject *obj)
 
void BlackToGreyAndUnshift (HeapObject *obj, MarkBit mark_bit)
 
void WhiteToGreyAndPush (HeapObject *obj, MarkBit mark_bit)
 
int steps_count ()
 
double steps_took ()
 
double longest_step ()
 
int steps_count_since_last_gc ()
 
double steps_took_since_last_gc ()
 
void SetOldSpacePageFlags (MemoryChunk *chunk)
 
void SetNewSpacePageFlags (NewSpacePage *chunk)
 
MarkingDequemarking_deque ()
 
bool IsCompacting ()
 
void ActivateGeneratedStub (Code *stub)
 
void NotifyOfHighPromotionRate ()
 
void EnterNoMarkingScope ()
 
void LeaveNoMarkingScope ()
 
void UncommitMarkingDeque ()
 
void NotifyIncompleteScanOfObject (int unscanned_bytes)
 

Static Public Member Functions

static void Initialize ()
 
static void RecordWriteFromCode (HeapObject *obj, Object **slot, Isolate *isolate)
 

Static Public Attributes

static const intptr_t kAllocatedThreshold = 65536
 
static const intptr_t kWriteBarriersInvokedThreshold = 32768
 
static const intptr_t kInitialMarkingSpeed = 1
 
static const intptr_t kFastMarking = 3
 
static const intptr_t kMarkingSpeedAccellerationInterval = 1024
 
static const intptr_t kMarkingSpeedAccelleration = 2
 
static const intptr_t kMaxMarkingSpeed = 1000
 

Detailed Description

Definition at line 40 of file incremental-marking.h.

Member Enumeration Documentation

Enumerator
ALLOW_COMPACTION 
PREVENT_COMPACTION 

Definition at line 78 of file incremental-marking.h.

Enumerator
GC_VIA_STACK_GUARD 
NO_GC_VIA_STACK_GUARD 

Definition at line 49 of file incremental-marking.h.

enum State
Enumerator
STOPPED 
SWEEPING 
MARKING 
COMPLETE 

Definition at line 42 of file incremental-marking.h.

Constructor & Destructor Documentation

IncrementalMarking ( Heap heap)
explicit

Definition at line 42 of file incremental-marking.cc.

Member Function Documentation

void EnterNoMarkingScope ( )
inline
void Initialize ( )
static
INLINE ( bool   IsMarking())
inline
INLINE ( bool   BaseRecordWriteHeapObject *obj, Object **slot, Object *value)
INLINE ( void   RecordWriteHeapObject *obj, Object **slot, Object *value)
INLINE ( void   RecordWriteIntoCodeHeapObject *obj, RelocInfo *rinfo, Object *value)
INLINE ( void   RecordWriteOfCodeEntryJSFunction *host, Object **slot, Code *value)
bool IsComplete ( )
inline

Definition at line 74 of file incremental-marking.h.

References IncrementalMarking::COMPLETE, and IncrementalMarking::state().

Referenced by TEST().

bool IsMarkingIncomplete ( )
inline

Definition at line 72 of file incremental-marking.h.

References IncrementalMarking::MARKING, and IncrementalMarking::state().

Referenced by FreeList::Allocate().

void LeaveNoMarkingScope ( )
inline

Definition at line 213 of file incremental-marking.h.

double longest_step ( )
inline

Definition at line 170 of file incremental-marking.h.

MarkingDeque* marking_deque ( )
inline
void NotifyIncompleteScanOfObject ( int  unscanned_bytes)
inline
void NotifyOfHighPromotionRate ( )
inline
void PrepareForScavenge ( )
void RecordCodeTargetPatch ( Code host,
Address  pc,
HeapObject value 
)

Definition at line 101 of file incremental-marking.cc.

void RecordCodeTargetPatch ( Address  pc,
HeapObject value 
)
void RecordWriteOfCodeEntrySlow ( JSFunction host,
Object **  slot,
Code value 
)
void RecordWriteSlow ( HeapObject obj,
Object **  slot,
Object value 
)
void set_should_hurry ( bool  val)
inline
void SetNewSpacePageFlags ( NewSpacePage chunk)
inline

Definition at line 186 of file incremental-marking.h.

void SetOldSpacePageFlags ( MemoryChunk chunk)
inline
bool should_hurry ( )
inline

Definition at line 65 of file incremental-marking.h.

int steps_count ( )
inline

Definition at line 162 of file incremental-marking.h.

int steps_count_since_last_gc ( )
inline

Definition at line 174 of file incremental-marking.h.

double steps_took ( )
inline

Definition at line 166 of file incremental-marking.h.

double steps_took_since_last_gc ( )
inline

Definition at line 178 of file incremental-marking.h.

void Stop ( )
void TearDown ( )

Definition at line 62 of file incremental-marking.cc.

Referenced by Heap::TearDown().

void WhiteToGreyAndPush ( HeapObject obj,
MarkBit  mark_bit 
)
inline

Field Documentation

const intptr_t kAllocatedThreshold = 65536
static
const intptr_t kFastMarking = 3
static
const intptr_t kInitialMarkingSpeed = 1
static

Definition at line 105 of file incremental-marking.h.

Referenced by IncrementalMarking::OldSpaceStep().

const intptr_t kMarkingSpeedAccelleration = 2
static

Definition at line 112 of file incremental-marking.h.

Referenced by IncrementalMarking::Step().

const intptr_t kMarkingSpeedAccellerationInterval = 1024
static

Definition at line 110 of file incremental-marking.h.

Referenced by IncrementalMarking::Step().

const intptr_t kMaxMarkingSpeed = 1000
static
const intptr_t kWriteBarriersInvokedThreshold = 32768
static

Definition at line 103 of file incremental-marking.h.

Referenced by IncrementalMarking::Step().


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