| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index 8b1494d2807a1d400a7b80c981a2a5220f33453d..cc12f7709311856679857576e632133faa2bb484 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -952,15 +952,13 @@ void Heap::ReportExternalMemoryPressure() {
|
| }
|
| } else {
|
| // Incremental marking is turned on an has already been started.
|
| - const double pressure =
|
| - static_cast<double>(external_memory_ -
|
| - external_memory_at_last_mark_compact_ -
|
| - kExternalAllocationSoftLimit) /
|
| - external_memory_hard_limit();
|
| - DCHECK_GE(1, pressure);
|
| - const double kMaxStepSizeOnExternalLimit = 25;
|
| - const double deadline = MonotonicallyIncreasingTimeInMs() +
|
| - pressure * kMaxStepSizeOnExternalLimit;
|
| + const double kMinStepSize = 5;
|
| + const double kMaxStepSize = 10;
|
| + const double ms_step =
|
| + Min(kMaxStepSize,
|
| + Max(kMinStepSize, static_cast<double>(external_memory_) /
|
| + external_memory_limit_ * kMinStepSize));
|
| + const double deadline = MonotonicallyIncreasingTimeInMs() + ms_step;
|
| incremental_marking()->AdvanceIncrementalMarking(
|
| deadline, IncrementalMarking::GC_VIA_STACK_GUARD,
|
| IncrementalMarking::FORCE_COMPLETION, StepOrigin::kV8);
|
|
|