Commit d869fd4f authored by hpayer@chromium.org's avatar hpayer@chromium.org

Fix incremental marking speed accelleration and start incremental marking when...

Fix incremental marking speed accelleration and start incremental marking when old space is almost full when pretenuring objects.

BUG=

Review URL: https://codereview.chromium.org/14649014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14555 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 1a9997ee
...@@ -860,6 +860,15 @@ void IncrementalMarking::MarkingComplete(CompletionAction action) { ...@@ -860,6 +860,15 @@ void IncrementalMarking::MarkingComplete(CompletionAction action) {
} }
void IncrementalMarking::OldSpaceStep(intptr_t allocated) {
if (IsStopped() && WorthActivating() && heap_->NextGCIsLikelyToBeFull()) {
Start();
} else {
Step(allocated * kFastMarking / kInitialMarkingSpeed, GC_VIA_STACK_GUARD);
}
}
void IncrementalMarking::Step(intptr_t allocated_bytes, void IncrementalMarking::Step(intptr_t allocated_bytes,
CompletionAction action) { CompletionAction action) {
if (heap_->gc_state() != Heap::NOT_IN_GC || if (heap_->gc_state() != Heap::NOT_IN_GC ||
...@@ -965,7 +974,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes, ...@@ -965,7 +974,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes,
PrintPID("Postponing speeding up marking until marking starts\n"); PrintPID("Postponing speeding up marking until marking starts\n");
} }
} else { } else {
marking_speed_ += kMarkingSpeedAccellerationInterval; marking_speed_ += kMarkingSpeedAccelleration;
marking_speed_ = static_cast<int>( marking_speed_ = static_cast<int>(
Min(kMaxMarkingSpeed, Min(kMaxMarkingSpeed,
static_cast<intptr_t>(marking_speed_ * 1.3))); static_cast<intptr_t>(marking_speed_ * 1.3)));
......
...@@ -110,10 +110,7 @@ class IncrementalMarking { ...@@ -110,10 +110,7 @@ class IncrementalMarking {
static const intptr_t kMarkingSpeedAccelleration = 2; static const intptr_t kMarkingSpeedAccelleration = 2;
static const intptr_t kMaxMarkingSpeed = 1000; static const intptr_t kMaxMarkingSpeed = 1000;
void OldSpaceStep(intptr_t allocated) { void OldSpaceStep(intptr_t allocated);
Step(allocated * kFastMarking / kInitialMarkingSpeed,
GC_VIA_STACK_GUARD);
}
void Step(intptr_t allocated, CompletionAction action); void Step(intptr_t allocated, CompletionAction action);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment