Reviewers: Hannes Payer,

Message:
PTAL

Description:
--predictable mode added

Please review this at https://codereview.chromium.org/93633008/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+25, -0 lines):
  M src/flag-definitions.h
  M src/v8.cc


Index: src/flag-definitions.h
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index 658991ff5425159f857bf9d31c123a40f90ae2e9..1230801bb106d930da0e0e6cb5d897615b62d849 100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -69,6 +69,9 @@
 #define DEFINE_implication(whenflag, thenflag) \
   if (FLAG_##whenflag) FLAG_##thenflag = true;

+#define DEFINE_neg_implication(whenflag, thenflag) \
+  if (FLAG_##whenflag) FLAG_##thenflag = false;
+
 #else
 #error No mode supplied when including flags.defs
 #endif
@@ -90,6 +93,10 @@
 #define DEFINE_implication(whenflag, thenflag)
 #endif

+#ifndef DEFINE_neg_implication
+#define DEFINE_neg_implication(whenflag, thenflag)
+#endif
+
 #define COMMA ,

 #ifdef FLAG_MODE_DECLARE
@@ -628,6 +635,14 @@ DEFINE_string(extra_code, NULL, "A filename with extra code to be included in"
 DEFINE_bool(profile_hydrogen_code_stub_compilation, false,
"Print the time it takes to lazily compile hydrogen code stubs.")

+DEFINE_bool(predictable, false, "enable predictable mode")
+DEFINE_neg_implication(predictable, randomize_hashes)
+DEFINE_neg_implication(predictable, concurrent_recompilation)
+DEFINE_neg_implication(predictable, concurrent_osr)
+DEFINE_neg_implication(predictable, concurrent_sweeping)
+DEFINE_neg_implication(predictable, parallel_sweeping)
+
+
 //
 // Dev shell flags
 //
@@ -875,6 +890,7 @@ DEFINE_bool(enable_ool_constant_pool, false,
 #undef DEFINE_float
 #undef DEFINE_args
 #undef DEFINE_implication
+#undef DEFINE_neg_implication
 #undef DEFINE_ALIAS_bool
 #undef DEFINE_ALIAS_int
 #undef DEFINE_ALIAS_string
Index: src/v8.cc
diff --git a/src/v8.cc b/src/v8.cc
index 004a33946148cc2a4f9c71591c5463606726d348..265f0a6db008580cf4d02fd098b4fa749f8eb898 100644
--- a/src/v8.cc
+++ b/src/v8.cc
@@ -162,6 +162,15 @@ void V8::FireCallCompletedCallback(Isolate* isolate) {

 void V8::InitializeOncePerProcessImpl() {
   FlagList::EnforceFlagImplications();
+
+  if (FLAG_predictable) {
+    if (FLAG_random_seed == 0) {
+      // Avoid random seeds in predictable mode.
+      FLAG_random_seed = 12347;
+    }
+    FLAG_hash_seed = 0;
+  }
+
   if (FLAG_stress_compaction) {
     FLAG_force_marking_deque_overflows = true;
     FLAG_gc_global = true;


--
--
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.

Reply via email to