5 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_
6 #define V8_HEAP_INCREMENTAL_MARKING_H_
89 bool force_marking =
false);
94 if (FLAG_trace_incremental_marking) {
95 PrintF(
"[IncrementalMarking] Restarting (new grey objects)\n");
149 "Increasing marking speed to %d "
150 "due to high promotion rate\n",
194 INLINE(intptr_t ProcessMarkingDeque(intptr_t bytes_to_process));
void RecordWriteSlow(HeapObject *obj, Object **slot, Object *value)
static const intptr_t kAllocatedThreshold
int unscanned_bytes_of_large_object_
INLINE(intptr_t ProcessMarkingDeque(intptr_t bytes_to_process))
void WhiteToGreyAndPush(HeapObject *obj, MarkBit mark_bit)
void Step(intptr_t allocated, CompletionAction action, bool force_marking=false)
base::VirtualMemory * marking_deque_memory_
MarkingDeque * marking_deque()
void OldSpaceStep(intptr_t allocated)
void EnterNoMarkingScope()
static const intptr_t kMaxMarkingSpeed
DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking)
void ActivateIncrementalWriteBarrier()
void RecordWriteOfCodeEntrySlow(JSFunction *host, Object **slot, Code *value)
static void RecordWriteFromCode(HeapObject *obj, Object **slot, Isolate *isolate)
static void DeactivateIncrementalWriteBarrierForSpace(PagedSpace *space)
int64_t old_generation_space_available_at_start_of_incremental_
void RecordWrites(HeapObject *obj)
INLINE(void VisitObject(Map *map, HeapObject *obj, int size))
void SetOldSpacePageFlags(MemoryChunk *chunk)
int64_t old_generation_space_used_at_start_of_incremental_
void RecordCodeTargetPatch(Code *host, Address pc, HeapObject *value)
INLINE(void RecordWriteIntoCode(HeapObject *obj, RelocInfo *rinfo, Object *value))
void RestartIfNotMarking()
bool IsMarkingIncomplete()
intptr_t write_barriers_invoked_since_last_step_
void LeaveNoMarkingScope()
void NotifyIncompleteScanOfObject(int unscanned_bytes)
void BlackToGreyAndUnshift(HeapObject *obj, MarkBit mark_bit)
void NotifyOfHighPromotionRate()
static const intptr_t kMarkingSpeedAccellerationInterval
INLINE(void ProcessMarkingDeque())
MarkingDeque marking_deque_
bool marking_deque_memory_committed_
void Start(CompactionFlag flag=ALLOW_COMPACTION)
void PrepareForScavenge()
void set_should_hurry(bool val)
static const intptr_t kMarkingSpeedAccelleration
void DeactivateIncrementalWriteBarrier()
int64_t SpaceLeftInOldSpace()
void StartMarking(CompactionFlag flag)
void EnsureMarkingDequeIsCommitted()
static const intptr_t kWriteBarriersInvokedThreshold
void UpdateMarkingDequeAfterScavenge()
INLINE(bool BaseRecordWrite(HeapObject *obj, Object **slot, Object *value))
IncrementalMarking(Heap *heap)
INLINE(void RecordWriteOfCodeEntry(JSFunction *host, Object **slot, Code *value))
void RecordWriteIntoCodeSlow(HeapObject *obj, RelocInfo *rinfo, Object *value)
void UncommitMarkingDeque()
void SetNewSpacePageFlags(NewSpacePage *chunk)
INLINE(void RecordWrite(HeapObject *obj, Object **slot, Object *value))
static const intptr_t kInitialMarkingSpeed
void MarkingComplete(CompletionAction action)
static const intptr_t kFastMarking
void ActivateGeneratedStub(Code *stub)
int no_marking_scope_depth_
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf map
enable harmony numeric enable harmony object literal extensions Optimize object size
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi space(in MBytes)
#define DCHECK(condition)
void PrintPID(const char *format,...)
void PrintF(const char *format,...)
kFeedbackVectorOffset flag
Debugger support for the V8 JavaScript engine.