| Index: src/incremental-marking-inl.h
|
| diff --git a/src/incremental-marking-inl.h b/src/incremental-marking-inl.h
|
| deleted file mode 100644
|
| index 692e95866b0e47eab214a0aa7370567a7fee83f6..0000000000000000000000000000000000000000
|
| --- a/src/incremental-marking-inl.h
|
| +++ /dev/null
|
| @@ -1,122 +0,0 @@
|
| -// Copyright 2012 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef V8_INCREMENTAL_MARKING_INL_H_
|
| -#define V8_INCREMENTAL_MARKING_INL_H_
|
| -
|
| -#include "src/incremental-marking.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -
|
| -bool IncrementalMarking::BaseRecordWrite(HeapObject* obj,
|
| - Object** slot,
|
| - Object* value) {
|
| - HeapObject* value_heap_obj = HeapObject::cast(value);
|
| - MarkBit value_bit = Marking::MarkBitFrom(value_heap_obj);
|
| - if (Marking::IsWhite(value_bit)) {
|
| - MarkBit obj_bit = Marking::MarkBitFrom(obj);
|
| - if (Marking::IsBlack(obj_bit)) {
|
| - MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address());
|
| - if (chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR)) {
|
| - if (chunk->IsLeftOfProgressBar(slot)) {
|
| - WhiteToGreyAndPush(value_heap_obj, value_bit);
|
| - RestartIfNotMarking();
|
| - } else {
|
| - return false;
|
| - }
|
| - } else {
|
| - BlackToGreyAndUnshift(obj, obj_bit);
|
| - RestartIfNotMarking();
|
| - return false;
|
| - }
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| - if (!is_compacting_) return false;
|
| - MarkBit obj_bit = Marking::MarkBitFrom(obj);
|
| - return Marking::IsBlack(obj_bit);
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::RecordWrite(HeapObject* obj,
|
| - Object** slot,
|
| - Object* value) {
|
| - if (IsMarking() && value->IsHeapObject()) {
|
| - RecordWriteSlow(obj, slot, value);
|
| - }
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::RecordWriteOfCodeEntry(JSFunction* host,
|
| - Object** slot,
|
| - Code* value) {
|
| - if (IsMarking()) RecordWriteOfCodeEntrySlow(host, slot, value);
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::RecordWriteIntoCode(HeapObject* obj,
|
| - RelocInfo* rinfo,
|
| - Object* value) {
|
| - if (IsMarking() && value->IsHeapObject()) {
|
| - RecordWriteIntoCodeSlow(obj, rinfo, value);
|
| - }
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::RecordWrites(HeapObject* obj) {
|
| - if (IsMarking()) {
|
| - MarkBit obj_bit = Marking::MarkBitFrom(obj);
|
| - if (Marking::IsBlack(obj_bit)) {
|
| - MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address());
|
| - if (chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR)) {
|
| - chunk->set_progress_bar(0);
|
| - }
|
| - BlackToGreyAndUnshift(obj, obj_bit);
|
| - RestartIfNotMarking();
|
| - }
|
| - }
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::BlackToGreyAndUnshift(HeapObject* obj,
|
| - MarkBit mark_bit) {
|
| - DCHECK(Marking::MarkBitFrom(obj) == mark_bit);
|
| - DCHECK(obj->Size() >= 2*kPointerSize);
|
| - DCHECK(IsMarking());
|
| - Marking::BlackToGrey(mark_bit);
|
| - int obj_size = obj->Size();
|
| - MemoryChunk::IncrementLiveBytesFromGC(obj->address(), -obj_size);
|
| - bytes_scanned_ -= obj_size;
|
| - int64_t old_bytes_rescanned = bytes_rescanned_;
|
| - bytes_rescanned_ = old_bytes_rescanned + obj_size;
|
| - if ((bytes_rescanned_ >> 20) != (old_bytes_rescanned >> 20)) {
|
| - if (bytes_rescanned_ > 2 * heap_->PromotedSpaceSizeOfObjects()) {
|
| - // If we have queued twice the heap size for rescanning then we are
|
| - // going around in circles, scanning the same objects again and again
|
| - // as the program mutates the heap faster than we can incrementally
|
| - // trace it. In this case we switch to non-incremental marking in
|
| - // order to finish off this marking phase.
|
| - if (FLAG_trace_gc) {
|
| - PrintPID("Hurrying incremental marking because of lack of progress\n");
|
| - }
|
| - marking_speed_ = kMaxMarkingSpeed;
|
| - }
|
| - }
|
| -
|
| - marking_deque_.UnshiftGrey(obj);
|
| -}
|
| -
|
| -
|
| -void IncrementalMarking::WhiteToGreyAndPush(HeapObject* obj, MarkBit mark_bit) {
|
| - Marking::WhiteToGrey(mark_bit);
|
| - marking_deque_.PushGrey(obj);
|
| -}
|
| -
|
| -
|
| -} } // namespace v8::internal
|
| -
|
| -#endif // V8_INCREMENTAL_MARKING_INL_H_
|
|
|