JSC should try to make profiling deterministic because otherwise reproducing failures is
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Jun 2012 02:53:39 +0000 (02:53 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Jun 2012 02:53:39 +0000 (02:53 +0000)
nearly impossible
https://bugs.webkit.org/show_bug.cgi?id=89940

Rubber stamped by Gavin Barraclough.

This rolls out the part of http://trac.webkit.org/changeset/121215 that introduced randomness
into the system. Now, instead of randomizing the tier-up threshold, we always set it to an
artificially low (and statically predetermined!) value. This gives most of the benefit of
threshold randomization without actually making the system behave completely differently on
each invocation.

* bytecode/ExecutionCounter.cpp:
(JSC::ExecutionCounter::setThreshold):
* runtime/Options.cpp:
(Options):
(JSC::Options::initializeOptions):
* runtime/Options.h:
(Options):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121218 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecode/ExecutionCounter.cpp
Source/JavaScriptCore/runtime/Options.cpp
Source/JavaScriptCore/runtime/Options.h

index 2bf3c99..fe1f397 100644 (file)
@@ -1,3 +1,25 @@
+2012-06-25  Filip Pizlo  <fpizlo@apple.com>
+
+        JSC should try to make profiling deterministic because otherwise reproducing failures is
+        nearly impossible
+        https://bugs.webkit.org/show_bug.cgi?id=89940
+
+        Rubber stamped by Gavin Barraclough.
+        
+        This rolls out the part of http://trac.webkit.org/changeset/121215 that introduced randomness
+        into the system. Now, instead of randomizing the tier-up threshold, we always set it to an
+        artificially low (and statically predetermined!) value. This gives most of the benefit of
+        threshold randomization without actually making the system behave completely differently on
+        each invocation.
+
+        * bytecode/ExecutionCounter.cpp:
+        (JSC::ExecutionCounter::setThreshold):
+        * runtime/Options.cpp:
+        (Options):
+        (JSC::Options::initializeOptions):
+        * runtime/Options.h:
+        (Options):
+
 2012-06-22  Filip Pizlo  <fpizlo@apple.com>
 
         Value profiling should use tier-up threshold randomization to get more coverage
index abbcf6b..1f2e826 100644 (file)
@@ -144,8 +144,11 @@ bool ExecutionCounter::setThreshold(CodeBlock* codeBlock)
         return true;
     }
 
-    int32_t maxThreshold =
-        codeBlock->globalObject()->weakRandomInteger() % Options::maximumExecutionCountsBetweenCheckpoints;
+    int32_t maxThreshold;
+    if (Options::randomizeExecutionCountsBetweenCheckpoints)
+        maxThreshold = codeBlock->globalObject()->weakRandomInteger() % Options::maximumExecutionCountsBetweenCheckpoints;
+    else
+        maxThreshold = Options::maximumExecutionCountsBetweenCheckpoints;
     if (threshold > maxThreshold)
         threshold = maxThreshold;
     
index f7da9e2..894ca8c 100644 (file)
@@ -67,6 +67,7 @@ int32_t thresholdForOptimizeSoon;
 int32_t executionCounterIncrementForLoop;
 int32_t executionCounterIncrementForReturn;
 
+bool randomizeExecutionCountsBetweenCheckpoints;
 int32_t maximumExecutionCountsBetweenCheckpoints;
 
 unsigned desiredSpeculativeSuccessFailRatio;
@@ -190,6 +191,7 @@ void initializeOptions()
     SET(executionCounterIncrementForLoop,   1);
     SET(executionCounterIncrementForReturn, 15);
     
+    SET(randomizeExecutionCountsBetweenCheckpoints, false);
     SET(maximumExecutionCountsBetweenCheckpoints, 1000);
 
     SET(desiredSpeculativeSuccessFailRatio, 6);
index 47e5113..1bce5b9 100644 (file)
@@ -53,6 +53,7 @@ extern int32_t thresholdForOptimizeNextInvocation;
 extern int32_t executionCounterIncrementForLoop;
 extern int32_t executionCounterIncrementForReturn;
 
+extern bool randomizeExecutionCountsBetweenCheckpoints;
 extern int32_t maximumExecutionCountsBetweenCheckpoints;
 
 extern unsigned desiredSpeculativeSuccessFailRatio;