5 #ifndef V8_HEAP_INCREMENTAL_MARKING_INL_H_
6 #define V8_HEAP_INCREMENTAL_MARKING_INL_H_
14 bool IncrementalMarking::BaseRecordWrite(HeapObject* obj,
Object** slot,
16 HeapObject* value_heap_obj = HeapObject::cast(value);
17 MarkBit value_bit = Marking::MarkBitFrom(value_heap_obj);
18 if (Marking::IsWhite(value_bit)) {
19 MarkBit obj_bit = Marking::MarkBitFrom(obj);
20 if (Marking::IsBlack(obj_bit)) {
23 if (chunk->IsLeftOfProgressBar(slot)) {
39 MarkBit obj_bit = Marking::MarkBitFrom(obj);
40 return Marking::IsBlack(obj_bit);
44 void IncrementalMarking::RecordWrite(HeapObject* obj,
Object** slot,
46 if (IsMarking() && value->IsHeapObject()) {
52 void IncrementalMarking::RecordWriteOfCodeEntry(JSFunction* host,
Object** slot,
58 void IncrementalMarking::RecordWriteIntoCode(HeapObject* obj, RelocInfo* rinfo,
60 if (IsMarking() && value->IsHeapObject()) {
68 MarkBit obj_bit = Marking::MarkBitFrom(obj);
69 if (Marking::IsBlack(obj_bit)) {
83 DCHECK(Marking::MarkBitFrom(obj) == mark_bit);
86 Marking::BlackToGrey(mark_bit);
87 int obj_size = obj->
Size();
100 PrintPID(
"Hurrying incremental marking because of lack of progress\n");
111 Marking::WhiteToGrey(mark_bit);
intptr_t PromotedSpaceSizeOfObjects()
void RecordWriteSlow(HeapObject *obj, Object **slot, Object *value)
void WhiteToGreyAndPush(HeapObject *obj, MarkBit mark_bit)
static const intptr_t kMaxMarkingSpeed
void RecordWriteOfCodeEntrySlow(JSFunction *host, Object **slot, Code *value)
void RecordWrites(HeapObject *obj)
void RestartIfNotMarking()
void BlackToGreyAndUnshift(HeapObject *obj, MarkBit mark_bit)
MarkingDeque marking_deque_
void RecordWriteIntoCodeSlow(HeapObject *obj, RelocInfo *rinfo, Object *value)
static void IncrementLiveBytesFromGC(Address address, int by)
static MemoryChunk * FromAddress(Address a)
void set_progress_bar(int progress_bar)
#define DCHECK(condition)
void PrintPID(const char *format,...)
kSerializedDataOffset Object
Debugger support for the V8 JavaScript engine.