[heap] Always use getter when accessing MarkingDeque

BUG=chromium:651354

Review-Url: https://codereview.chromium.org/2377273002
Cr-Commit-Position: refs/heads/master@{#39859}
This commit is contained in:
mlippautz 2016-09-29 03:56:08 -07:00 committed by Commit bot
parent 4baa8d86f0
commit 9b7264e30d
4 changed files with 23 additions and 23 deletions

View File

@ -962,7 +962,7 @@ bool Heap::CollectGarbage(GarbageCollector collector,
!incremental_marking()->should_hurry() && FLAG_incremental_marking &&
OldGenerationSpaceAvailable() <= 0) {
if (!incremental_marking()->IsComplete() &&
!mark_compact_collector()->marking_deque_.IsEmpty() &&
!mark_compact_collector()->marking_deque()->IsEmpty() &&
!FLAG_gc_global) {
if (FLAG_trace_incremental_marking) {
isolate()->PrintWithTimestamp(

View File

@ -14,7 +14,7 @@ namespace internal {
void MarkCompactCollector::PushBlack(HeapObject* obj) {
DCHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(obj)));
if (marking_deque_.Push(obj)) {
if (marking_deque()->Push(obj)) {
MemoryChunk::IncrementLiveBytesFromGC(obj, obj->Size());
} else {
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
@ -25,7 +25,7 @@ void MarkCompactCollector::PushBlack(HeapObject* obj) {
void MarkCompactCollector::UnshiftBlack(HeapObject* obj) {
DCHECK(Marking::IsBlack(ObjectMarking::MarkBitFrom(obj)));
if (!marking_deque_.Unshift(obj)) {
if (!marking_deque()->Unshift(obj)) {
MemoryChunk::IncrementLiveBytesFromGC(obj, -obj->Size());
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
Marking::BlackToGrey(mark_bit);

View File

@ -1977,7 +1977,7 @@ void MarkCompactCollector::MarkRoots(RootMarkingVisitor* visitor) {
MarkStringTable(visitor);
// There may be overflowed objects in the heap. Visit them now.
while (marking_deque_.overflowed()) {
while (marking_deque()->overflowed()) {
RefillMarkingDeque();
EmptyMarkingDeque();
}
@ -2020,8 +2020,8 @@ void MarkCompactCollector::MarkImplicitRefGroups(
// After: the marking stack is empty, and all objects reachable from the
// marking stack have been marked, or are overflowed in the heap.
void MarkCompactCollector::EmptyMarkingDeque() {
while (!marking_deque_.IsEmpty()) {
HeapObject* object = marking_deque_.Pop();
while (!marking_deque()->IsEmpty()) {
HeapObject* object = marking_deque()->Pop();
DCHECK(!object->IsFiller());
DCHECK(object->IsHeapObject());
@ -2044,25 +2044,25 @@ void MarkCompactCollector::EmptyMarkingDeque() {
// is cleared.
void MarkCompactCollector::RefillMarkingDeque() {
isolate()->CountUsage(v8::Isolate::UseCounterFeature::kMarkDequeOverflow);
DCHECK(marking_deque_.overflowed());
DCHECK(marking_deque()->overflowed());
DiscoverGreyObjectsInNewSpace();
if (marking_deque_.IsFull()) return;
if (marking_deque()->IsFull()) return;
DiscoverGreyObjectsInSpace(heap()->old_space());
if (marking_deque_.IsFull()) return;
if (marking_deque()->IsFull()) return;
DiscoverGreyObjectsInSpace(heap()->code_space());
if (marking_deque_.IsFull()) return;
if (marking_deque()->IsFull()) return;
DiscoverGreyObjectsInSpace(heap()->map_space());
if (marking_deque_.IsFull()) return;
if (marking_deque()->IsFull()) return;
LargeObjectIterator lo_it(heap()->lo_space());
DiscoverGreyObjectsWithIterator(&lo_it);
if (marking_deque_.IsFull()) return;
if (marking_deque()->IsFull()) return;
marking_deque_.ClearOverflowed();
marking_deque()->ClearOverflowed();
}
@ -2072,7 +2072,7 @@ void MarkCompactCollector::RefillMarkingDeque() {
// objects in the heap.
void MarkCompactCollector::ProcessMarkingDeque() {
EmptyMarkingDeque();
while (marking_deque_.overflowed()) {
while (marking_deque()->overflowed()) {
RefillMarkingDeque();
EmptyMarkingDeque();
}
@ -2082,7 +2082,7 @@ void MarkCompactCollector::ProcessMarkingDeque() {
// stack including references only considered in the atomic marking pause.
void MarkCompactCollector::ProcessEphemeralMarking(
ObjectVisitor* visitor, bool only_process_harmony_weak_collections) {
DCHECK(marking_deque_.IsEmpty() && !marking_deque_.overflowed());
DCHECK(marking_deque()->IsEmpty() && !marking_deque()->overflowed());
bool work_to_do = true;
while (work_to_do) {
if (heap_->UsingEmbedderHeapTracer()) {
@ -2099,7 +2099,7 @@ void MarkCompactCollector::ProcessEphemeralMarking(
MarkImplicitRefGroups(&MarkCompactMarkingVisitor::MarkObject);
}
ProcessWeakCollections();
work_to_do = !marking_deque_.IsEmpty();
work_to_do = !marking_deque()->IsEmpty();
ProcessMarkingDeque();
}
}
@ -2123,7 +2123,7 @@ void MarkCompactCollector::ProcessTopOptimizedFrame(ObjectVisitor* visitor) {
void MarkCompactCollector::EnsureMarkingDequeIsReserved() {
DCHECK(!marking_deque_.in_use());
DCHECK(!marking_deque()->in_use());
if (marking_deque_memory_ == NULL) {
marking_deque_memory_ = new base::VirtualMemory(kMaxMarkingDequeSize);
marking_deque_memory_committed_ = 0;
@ -2137,7 +2137,7 @@ void MarkCompactCollector::EnsureMarkingDequeIsReserved() {
void MarkCompactCollector::EnsureMarkingDequeIsCommitted(size_t max_size) {
// If the marking deque is too small, we try to allocate a bigger one.
// If that fails, make do with a smaller one.
CHECK(!marking_deque_.in_use());
CHECK(!marking_deque()->in_use());
for (size_t size = max_size; size >= kMinMarkingDequeSize; size >>= 1) {
base::VirtualMemory* memory = marking_deque_memory_;
size_t currently_committed = marking_deque_memory_committed_;
@ -2169,12 +2169,12 @@ void MarkCompactCollector::EnsureMarkingDequeIsCommitted(size_t max_size) {
void MarkCompactCollector::InitializeMarkingDeque() {
DCHECK(!marking_deque_.in_use());
DCHECK(!marking_deque()->in_use());
DCHECK(marking_deque_memory_committed_ > 0);
Address addr = static_cast<Address>(marking_deque_memory_->address());
size_t size = marking_deque_memory_committed_;
if (FLAG_force_marking_deque_overflows) size = 64 * kPointerSize;
marking_deque_.Initialize(addr, addr + size);
marking_deque()->Initialize(addr, addr + size);
}
@ -2270,8 +2270,8 @@ void MarkCompactCollector::MarkLiveObjects() {
} else {
// Abort any pending incremental activities e.g. incremental sweeping.
incremental_marking->Stop();
if (marking_deque_.in_use()) {
marking_deque_.Uninitialize(true);
if (marking_deque()->in_use()) {
marking_deque()->Uninitialize(true);
}
}
}

View File

@ -467,7 +467,7 @@ class MarkCompactCollector {
static const size_t kMinMarkingDequeSize = 256 * KB;
void EnsureMarkingDequeIsCommittedAndInitialize(size_t max_size) {
if (!marking_deque_.in_use()) {
if (!marking_deque()->in_use()) {
EnsureMarkingDequeIsCommitted(max_size);
InitializeMarkingDeque();
}