diff options
Diffstat (limited to 'deps/v8/src/heap/incremental-marking-inl.h')
-rw-r--r-- | deps/v8/src/heap/incremental-marking-inl.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/deps/v8/src/heap/incremental-marking-inl.h b/deps/v8/src/heap/incremental-marking-inl.h index 19d6b22e4d..e19d62f4d4 100644 --- a/deps/v8/src/heap/incremental-marking-inl.h +++ b/deps/v8/src/heap/incremental-marking-inl.h @@ -6,6 +6,8 @@ #define V8_HEAP_INCREMENTAL_MARKING_INL_H_ #include "src/heap/incremental-marking.h" + +#include "src/heap/mark-compact-inl.h" #include "src/isolate.h" #include "src/objects-inl.h" #include "src/objects/maybe-object.h" @@ -13,6 +15,23 @@ namespace v8 { namespace internal { +void IncrementalMarking::TransferColor(HeapObject* from, HeapObject* to) { + if (atomic_marking_state()->IsBlack(to)) { + DCHECK(black_allocation()); + return; + } + + DCHECK(atomic_marking_state()->IsWhite(to)); + if (atomic_marking_state()->IsGrey(from)) { + bool success = atomic_marking_state()->WhiteToGrey(to); + DCHECK(success); + USE(success); + } else if (atomic_marking_state()->IsBlack(from)) { + bool success = atomic_marking_state()->WhiteToBlack(to); + DCHECK(success); + USE(success); + } +} void IncrementalMarking::RecordWrite(HeapObject* obj, Object** slot, Object* value) { @@ -30,7 +49,7 @@ void IncrementalMarking::RecordMaybeWeakWrite(HeapObject* obj, // When writing a weak reference, treat it as strong for the purposes of the // marking barrier. HeapObject* heap_object; - if (IsMarking() && value->ToStrongOrWeakHeapObject(&heap_object)) { + if (IsMarking() && value->GetHeapObject(&heap_object)) { RecordWriteSlow(obj, reinterpret_cast<HeapObjectReference**>(slot), heap_object); } |