Reviewers: Michael Starzinger, danno,
Description:
Simplifying GC heuristics, deleted old generation limit factor.
Please review this at https://codereview.chromium.org/15114003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/heap.h
M src/heap.cc
Index: src/heap.cc
diff --git a/src/heap.cc b/src/heap.cc
index
6a6afc022e54aff302e78a78abf2ecdaaf7dd423..35b201f2f1b53a23d59ac4f1ae87bcd1b44c877f
100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -120,7 +120,6 @@ Heap::Heap()
new_space_high_promotion_mode_active_(false),
old_gen_promotion_limit_(kMinimumPromotionLimit),
old_gen_allocation_limit_(kMinimumAllocationLimit),
- old_gen_limit_factor_(1),
size_of_old_gen_at_last_old_space_gc_(0),
external_allocation_limit_(0),
amount_of_external_allocated_memory_(0),
@@ -912,26 +911,11 @@ bool Heap::PerformGarbageCollection(GarbageCollector
collector,
// Perform mark-sweep with optional compaction.
MarkCompact(tracer);
sweep_generation_++;
- bool high_survival_rate_during_scavenges = IsHighSurvivalRate() &&
- IsStableOrIncreasingSurvivalTrend();
UpdateSurvivalRateTrend(start_new_space_size);
size_of_old_gen_at_last_old_space_gc_ = PromotedSpaceSizeOfObjects();
- if (high_survival_rate_during_scavenges &&
- IsStableOrIncreasingSurvivalTrend()) {
- // Stable high survival rates of young objects both during partial
and
- // full collection indicate that mutator is either building or
modifying
- // a structure with a long lifetime.
- // In this case we aggressively raise old generation memory limits to
- // postpone subsequent mark-sweep collection and thus trade memory
- // space for the mutation speed.
- old_gen_limit_factor_ = 2;
- } else {
- old_gen_limit_factor_ = 1;
- }
-
old_gen_promotion_limit_ =
OldGenPromotionLimit(size_of_old_gen_at_last_old_space_gc_);
old_gen_allocation_limit_ =
@@ -5895,7 +5879,6 @@ void Heap::ReportHeapStatistics(const char* title) {
old_gen_promotion_limit_);
PrintF("old_gen_allocation_limit_ %" V8_PTR_PREFIX "d\n",
old_gen_allocation_limit_);
- PrintF("old_gen_limit_factor_ %d\n", old_gen_limit_factor_);
PrintF("\n");
PrintF("Number of handles : %d\n",
HandleScope::NumberOfHandles(isolate_));
Index: src/heap.h
diff --git a/src/heap.h b/src/heap.h
index
add42c01d6f499a2996ee1872bcb39c4a1f4e178..57f57c4b5df48853461e317be1227c56695ecfff
100644
--- a/src/heap.h
+++ b/src/heap.h
@@ -1567,7 +1567,6 @@ class Heap {
intptr_t limit =
Max(old_gen_size + old_gen_size / divisor, kMinimumPromotionLimit);
limit += new_space_.Capacity();
- limit *= old_gen_limit_factor_;
intptr_t halfway_to_the_max = (old_gen_size +
max_old_generation_size_) / 2;
return Min(limit, halfway_to_the_max);
}
@@ -1578,7 +1577,6 @@ class Heap {
intptr_t limit =
Max(old_gen_size + old_gen_size / divisor,
kMinimumAllocationLimit);
limit += new_space_.Capacity();
- limit *= old_gen_limit_factor_;
intptr_t halfway_to_the_max = (old_gen_size +
max_old_generation_size_) / 2;
return Min(limit, halfway_to_the_max);
}
@@ -1998,10 +1996,6 @@ class Heap {
// every allocation in large object space.
intptr_t old_gen_allocation_limit_;
- // Sometimes the heuristics dictate that those limits are increased.
This
- // variable records that fact.
- int old_gen_limit_factor_;
-
// Used to adjust the limits that control the timing of the next GC.
intptr_t size_of_old_gen_at_last_old_space_gc_;
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.