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

Force incremental marking when called from idle notification.

BUG=
R=ernstm@chromium.org, jochen@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22854 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 62714a58
...@@ -4169,7 +4169,7 @@ void Heap::MakeHeapIterable() { ...@@ -4169,7 +4169,7 @@ void Heap::MakeHeapIterable() {
void Heap::AdvanceIdleIncrementalMarking(intptr_t step_size) { void Heap::AdvanceIdleIncrementalMarking(intptr_t step_size) {
incremental_marking()->Step(step_size, incremental_marking()->Step(step_size,
IncrementalMarking::NO_GC_VIA_STACK_GUARD); IncrementalMarking::NO_GC_VIA_STACK_GUARD, true);
if (incremental_marking()->IsComplete()) { if (incremental_marking()->IsComplete()) {
bool uncommit = false; bool uncommit = false;
......
...@@ -821,8 +821,8 @@ void IncrementalMarking::OldSpaceStep(intptr_t allocated) { ...@@ -821,8 +821,8 @@ void IncrementalMarking::OldSpaceStep(intptr_t allocated) {
} }
void IncrementalMarking::Step(intptr_t allocated_bytes, void IncrementalMarking::Step(intptr_t allocated_bytes, CompletionAction action,
CompletionAction action) { bool force_marking) {
if (heap_->gc_state() != Heap::NOT_IN_GC || !FLAG_incremental_marking || if (heap_->gc_state() != Heap::NOT_IN_GC || !FLAG_incremental_marking ||
!FLAG_incremental_marking_steps || !FLAG_incremental_marking_steps ||
(state_ != SWEEPING && state_ != MARKING)) { (state_ != SWEEPING && state_ != MARKING)) {
...@@ -831,7 +831,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes, ...@@ -831,7 +831,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes,
allocated_ += allocated_bytes; allocated_ += allocated_bytes;
if (allocated_ < kAllocatedThreshold && if (!force_marking && allocated_ < kAllocatedThreshold &&
write_barriers_invoked_since_last_step_ < write_barriers_invoked_since_last_step_ <
kWriteBarriersInvokedThreshold) { kWriteBarriersInvokedThreshold) {
return; return;
......
...@@ -83,7 +83,8 @@ class IncrementalMarking { ...@@ -83,7 +83,8 @@ class IncrementalMarking {
void OldSpaceStep(intptr_t allocated); void OldSpaceStep(intptr_t allocated);
void Step(intptr_t allocated, CompletionAction action); void Step(intptr_t allocated, CompletionAction action,
bool force_marking = false);
inline void RestartIfNotMarking() { inline void RestartIfNotMarking() {
if (state_ == COMPLETE) { if (state_ == COMPLETE) {
......
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