Reviewers: Michael Starzinger,
Message:
Please take a look.
Description:
Add a flag to deoptimize all functions every n garbage collections.
[email protected]
Please review this at https://chromiumcodereview.appspot.com/14091013/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/flag-definitions.h
M src/heap.h
M src/heap.cc
Index: src/flag-definitions.h
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index
9c9362b2f003d5e648b8186813d8fe85da300b70..bc699dcef330c4b3caac1ebf8d48d2e4d074a427
100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -230,6 +230,9 @@ DEFINE_bool(stress_environments, false, "environment
for every instruction")
DEFINE_int(deopt_every_n_times,
0,
"deoptimize every n times a deopt point is passed")
+DEFINE_int(deopt_every_n_garbage_collections,
+ 0,
+ "deoptimize every n garbage collections")
DEFINE_bool(trap_on_deopt, false, "put a break point before deoptimizing")
DEFINE_bool(deoptimize_uncommon_cases, true, "deoptimize uncommon cases")
DEFINE_bool(polymorphic_inlining, true, "polymorphic inlining")
Index: src/heap.cc
diff --git a/src/heap.cc b/src/heap.cc
index
10cb4738abdf66c07be84b3900eeb9dd2d95c553..82d586c9795a46f8e681e12b8bb49fed3f7975e5
100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -157,6 +157,7 @@ Heap::Heap()
ms_count_at_last_idle_notification_(0),
gc_count_at_last_idle_gc_(0),
scavenges_since_last_idle_round_(kIdleScavengeThreshold),
+ gcs_since_last_deopt_(0),
#ifdef VERIFY_HEAP
no_weak_embedded_maps_verification_scope_depth_(0),
#endif
@@ -487,6 +488,12 @@ void Heap::GarbageCollectionEpilogue() {
if (FLAG_gc_verbose) Print();
if (FLAG_code_stats) ReportCodeStatistics("After GC");
#endif
+ if (FLAG_deopt_every_n_garbage_collections > 0) {
+ if (++gcs_since_last_deopt_ == FLAG_deopt_every_n_garbage_collections)
{
+ Deoptimizer::DeoptimizeAll(isolate());
+ gcs_since_last_deopt_ = 0;
+ }
+ }
isolate_->counters()->alive_after_last_gc()->Set(
static_cast<int>(SizeOfObjects()));
Index: src/heap.h
diff --git a/src/heap.h b/src/heap.h
index
49cce59916d641bd8a0571e3da25658012f84284..a51cecd2158636c566894cfab5047d4e6b0484be
100644
--- a/src/heap.h
+++ b/src/heap.h
@@ -2295,6 +2295,12 @@ class Heap {
unsigned int gc_count_at_last_idle_gc_;
int scavenges_since_last_idle_round_;
+ // If the --deopt_every_n_garbage_collections flag is set to a positive
value,
+ // this variable holds the number of garbage collections since the last
+ // deoptimization triggered by garbage collection.
+ int gcs_since_last_deopt_;
+
+
#ifdef VERIFY_HEAP
int no_weak_embedded_maps_verification_scope_depth_;
#endif
--
--
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.