Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Unified Diff: src/heap.cc

Issue 5862002: Version 3.0.2. (Closed)
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« ChangeLog ('K') | « src/heap.h ('k') | src/heap-profiler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap.cc
diff --git a/src/heap.cc b/src/heap.cc
index ccf9b47a35c56f48f4d6a5beb8f03da7392a469b..0497ad5f6a3d0b12ff72fbf94c6c61f43f8dab4b 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -3757,21 +3757,14 @@ bool Heap::IdleNotification() {
static const int kIdlesBeforeScavenge = 4;
static const int kIdlesBeforeMarkSweep = 7;
static const int kIdlesBeforeMarkCompact = 8;
- static const int kMaxIdleCount = kIdlesBeforeMarkCompact + 1;
- static const int kGCsBetweenCleanup = 4;
static int number_idle_notifications = 0;
static int last_gc_count = gc_count_;
bool uncommit = true;
bool finished = false;
- // Reset the number of idle notifications received when a number of
- // GCs have taken place. This allows another round of cleanup based
- // on idle notifications if enough work has been carried out to
- // provoke a number of garbage collections.
- if (gc_count_ < last_gc_count + kGCsBetweenCleanup) {
- number_idle_notifications =
- Min(number_idle_notifications + 1, kMaxIdleCount);
+ if (last_gc_count == gc_count_) {
+ number_idle_notifications++;
} else {
number_idle_notifications = 0;
last_gc_count = gc_count_;
@@ -3786,6 +3779,7 @@ bool Heap::IdleNotification() {
}
new_space_.Shrink();
last_gc_count = gc_count_;
+
} else if (number_idle_notifications == kIdlesBeforeMarkSweep) {
// Before doing the mark-sweep collections we clear the
// compilation cache to avoid hanging on to source code and
@@ -3800,6 +3794,7 @@ bool Heap::IdleNotification() {
CollectAllGarbage(true);
new_space_.Shrink();
last_gc_count = gc_count_;
+ number_idle_notifications = 0;
finished = true;
} else if (contexts_disposed_ > 0) {
@@ -3818,11 +3813,6 @@ bool Heap::IdleNotification() {
number_idle_notifications = 0;
uncommit = false;
}
- } else if (number_idle_notifications > kIdlesBeforeMarkCompact) {
- // If we have received more than kIdlesBeforeMarkCompact idle
- // notifications we do not perform any cleanup because we don't
- // expect to gain much by doing so.
- finished = true;
}
// Make sure that we have no pending context disposals and
« ChangeLog ('K') | « src/heap.h ('k') | src/heap-profiler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698