Commit e8c593c4 authored by ulan's avatar ulan Committed by Commit bot

Revert of Avoid excessive GCs in small heaps. (patchset #1 id:1 of...

Revert of Avoid excessive GCs in small heaps. (patchset #1 id:1 of https://codereview.chromium.org/1144223002/)

Reason for revert:
Regressed Sunspider.

Original issue's description:
> Avoid excessive GCs in small heaps.
>
> Small heaps and small heap growing factor can lead to excessive GCs in corner cases.
>
> Consider function F(old_gen_size, factor) that returns the number of bytes that
> have to be allocated in the old generation to start incremental marking.
>
> F(4MB, 1.1) = 4MB (because of kMinimumOldGenerationAllocationLimit)
> F(6MB, 1.1) = 2MB (because of kMinimumOldGenerationAllocationLimit)
> F(8MB, 1.1) = 800KB
>
> Funtion F should be monotonic in old_gen_size, but it currently has a minimum
> at kMinimumOldGenerationAllocationLimit.
>
> This CL makes F monotonic.
>
> BUG=
>
> Committed: https://crrev.com/22b1da99732b4db0754bf267ec470a2831216fb2
> Cr-Commit-Position: refs/heads/master@{#28549}

TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28558}
parent b7eae801
...@@ -5312,7 +5312,7 @@ intptr_t Heap::CalculateOldGenerationAllocationLimit(double factor, ...@@ -5312,7 +5312,7 @@ intptr_t Heap::CalculateOldGenerationAllocationLimit(double factor,
CHECK(factor > 1.0); CHECK(factor > 1.0);
CHECK(old_gen_size > 0); CHECK(old_gen_size > 0);
intptr_t limit = static_cast<intptr_t>(old_gen_size * factor); intptr_t limit = static_cast<intptr_t>(old_gen_size * factor);
limit = Max(limit, old_gen_size + kMinimumOldGenerationAllocationLimit); limit = Max(limit, kMinimumOldGenerationAllocationLimit);
limit += new_space_.Capacity(); limit += new_space_.Capacity();
intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2;
return Min(limit, halfway_to_the_max); return Min(limit, halfway_to_the_max);
......
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