v8  3.14.5(node0.10.28)
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 }
 

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 ()
 
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)
 
bool MarkBlackOrKeepGrey (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 ()
 

Static Public Member Functions

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

Static Public Attributes

static const intptr_t kAllocatedThreshold = 65536
 
static const intptr_t kWriteBarriersInvokedThreshold = 65536
 
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
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
bool IsMarkingIncomplete ( )
inline
void LeaveNoMarkingScope ( )
inline

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

double longest_step ( )
inline

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

bool MarkBlackOrKeepGrey ( MarkBit  mark_bit)
inline
MarkingDeque* marking_deque ( )
inline

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

void NotifyOfHighPromotionRate ( )
inline
void PrepareForScavenge ( )
void RecordCodeTargetPatch ( Code host,
Address  pc,
HeapObject value 
)
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 204 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 180 of file incremental-marking.h.

int steps_count_since_last_gc ( )
inline

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

double steps_took ( )
inline

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

double steps_took_since_last_gc ( )
inline

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

void Stop ( )
void TearDown ( )

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

Referenced by Heap::TearDown().

bool WorthActivating ( )

Field Documentation

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

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

Referenced by IncrementalMarking::OldSpaceStep().

const intptr_t kMarkingSpeedAccelleration = 2
static

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

const intptr_t kMarkingSpeedAccellerationInterval = 1024
static

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

Referenced by IncrementalMarking::Step().

const intptr_t kMaxMarkingSpeed = 1000
static
const intptr_t kWriteBarriersInvokedThreshold = 65536
static

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

Referenced by IncrementalMarking::Step().


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