<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[162489] branches/jsCStack</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/162489">162489</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2014-01-21 17:59:35 -0800 (Tue, 21 Jan 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Source/JavaScriptCore: Add a --enableExperimentalFTLCoverage option and use it to protect recently added features.

Rubber stamped by Mark Hahnenberg.
        
We're still in a mode where adding new FTL features can cause performance regressions. This allows us to
add them and get them to be tested for correctness while we still continue to track progress on performance
work.

* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* runtime/Options.h:

Tools: Use --enableExperimentalFTLCoverage=true for all FTL tests.

Rubber stamped by Mark Hahnenberg.

* Scripts/run-jsc-stress-tests:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesjsCStackSourceJavaScriptCoreChangeLog">branches/jsCStack/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreftlFTLCapabilitiescpp">branches/jsCStack/Source/JavaScriptCore/ftl/FTLCapabilities.cpp</a></li>
<li><a href="#branchesjsCStackSourceJavaScriptCoreruntimeOptionsh">branches/jsCStack/Source/JavaScriptCore/runtime/Options.h</a></li>
<li><a href="#branchesjsCStackToolsChangeLog">branches/jsCStack/Tools/ChangeLog</a></li>
<li><a href="#branchesjsCStackToolsScriptsrunjscstresstests">branches/jsCStack/Tools/Scripts/run-jsc-stress-tests</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesjsCStackSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/ChangeLog (162488 => 162489)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/ChangeLog        2014-01-22 01:59:06 UTC (rev 162488)
+++ branches/jsCStack/Source/JavaScriptCore/ChangeLog        2014-01-22 01:59:35 UTC (rev 162489)
</span><span class="lines">@@ -1,5 +1,19 @@
</span><span class="cx"> 2014-01-21  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Add a --enableExperimentalFTLCoverage option and use it to protect recently added features.
+
+        Rubber stamped by Mark Hahnenberg.
+        
+        We're still in a mode where adding new FTL features can cause performance regressions. This allows us to
+        add them and get them to be tested for correctness while we still continue to track progress on performance
+        work.
+
+        * ftl/FTLCapabilities.cpp:
+        (JSC::FTL::canCompile):
+        * runtime/Options.h:
+
+2014-01-21  Filip Pizlo  &lt;fpizlo@apple.com&gt;
+
</ins><span class="cx">         FTL should support AllocationProfileWatchpoint
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=127383
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreftlFTLCapabilitiescpp"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/ftl/FTLCapabilities.cpp (162488 => 162489)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/ftl/FTLCapabilities.cpp        2014-01-22 01:59:06 UTC (rev 162488)
+++ branches/jsCStack/Source/JavaScriptCore/ftl/FTLCapabilities.cpp        2014-01-22 01:59:35 UTC (rev 162489)
</span><span class="lines">@@ -122,7 +122,6 @@
</span><span class="cx">     case CountExecution:
</span><span class="cx">     case CheckExecutable:
</span><span class="cx">     case GetScope:
</span><del>-    case AllocationProfileWatchpoint:
</del><span class="cx">         // These are OK.
</span><span class="cx">         break;
</span><span class="cx">     case GetById:
</span><span class="lines">@@ -236,6 +235,10 @@
</span><span class="cx">             return CannotCompile;
</span><span class="cx">         }
</span><span class="cx">         break;
</span><ins>+    case AllocationProfileWatchpoint:
+        if (!Options::enableExperimentalFTLCoverage())
+            return CannotCompile;
+        break;
</ins><span class="cx">     default:
</span><span class="cx">         // Don't know how to handle anything else.
</span><span class="cx">         return CannotCompile;
</span></span></pre></div>
<a id="branchesjsCStackSourceJavaScriptCoreruntimeOptionsh"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Source/JavaScriptCore/runtime/Options.h (162488 => 162489)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Source/JavaScriptCore/runtime/Options.h        2014-01-22 01:59:06 UTC (rev 162488)
+++ branches/jsCStack/Source/JavaScriptCore/runtime/Options.h        2014-01-22 01:59:35 UTC (rev 162489)
</span><span class="lines">@@ -133,6 +133,7 @@
</span><span class="cx">     v(bool, enableOSREntryToDFG, true) \
</span><span class="cx">     \
</span><span class="cx">     v(bool, useExperimentalFTL, false) \
</span><ins>+    v(bool, enableExperimentalFTLCoverage, false) \
</ins><span class="cx">     v(bool, useFTLTBAA, true) \
</span><span class="cx">     v(bool, enableLLVMFastISel, false) \
</span><span class="cx">     v(bool, useLLVMSmallCodeModel, false) \
</span></span></pre></div>
<a id="branchesjsCStackToolsChangeLog"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/ChangeLog (162488 => 162489)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/ChangeLog        2014-01-22 01:59:06 UTC (rev 162488)
+++ branches/jsCStack/Tools/ChangeLog        2014-01-22 01:59:35 UTC (rev 162489)
</span><span class="lines">@@ -1,3 +1,11 @@
</span><ins>+2014-01-21  Filip Pizlo  &lt;fpizlo@apple.com&gt;
+
+        Use --enableExperimentalFTLCoverage=true for all FTL tests.
+
+        Rubber stamped by Mark Hahnenberg.
+
+        * Scripts/run-jsc-stress-tests:
+
</ins><span class="cx"> 2014-01-17  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, run Mozilla tests with the FTL.
</span></span></pre></div>
<a id="branchesjsCStackToolsScriptsrunjscstresstests"></a>
<div class="modfile"><h4>Modified: branches/jsCStack/Tools/Scripts/run-jsc-stress-tests (162488 => 162489)</h4>
<pre class="diff"><span>
<span class="info">--- branches/jsCStack/Tools/Scripts/run-jsc-stress-tests        2014-01-22 01:59:06 UTC (rev 162488)
+++ branches/jsCStack/Tools/Scripts/run-jsc-stress-tests        2014-01-22 01:59:35 UTC (rev 162489)
</span><span class="lines">@@ -172,6 +172,8 @@
</span><span class="cx"> 
</span><span class="cx"> EAGER_OPTIONS = [&quot;--thresholdForJITAfterWarmUp=10&quot;, &quot;--thresholdForJITSoon=10&quot;, &quot;--thresholdForOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForOptimizeAfterLongWarmUp=20&quot;, &quot;--thresholdForOptimizeSoon=20&quot;, &quot;--thresholdForFTLOptimizeAfterWarmUp=20&quot;, &quot;--thresholdForFTLOptimizeSoon=20&quot;]
</span><span class="cx"> 
</span><ins>+FTL_OPTIONS = [&quot;--useExperimentalFTL=true&quot;, &quot;--enableExperimentalFTLCoverage=true&quot;]
+
</ins><span class="cx"> $runlist = []
</span><span class="cx"> 
</span><span class="cx"> def frameworkFromJSCPath(jscPath)
</span><span class="lines">@@ -524,19 +526,19 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runDefaultFTL
</span><del>-    run(&quot;default-ftl&quot;, &quot;--useExperimentalFTL=true&quot;)
</del><ins>+    run(&quot;default-ftl&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLNoCJIT
</span><del>-    run(&quot;ftl-no-cjit&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--useExperimentalFTL=true&quot;)
</del><ins>+    run(&quot;ftl-no-cjit&quot;, &quot;--enableConcurrentJIT=false&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLNoCJITValidate
</span><del>-    run(&quot;ftl-no-cjit-validate&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--validateGraph=true&quot;)
</del><ins>+    run(&quot;ftl-no-cjit-validate&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateGraph=true&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLNoCJITOSRValidation
</span><del>-    run(&quot;ftl-no-cjit-osr-validation&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--validateFTLOSRExitLiveness=true&quot;)
</del><ins>+    run(&quot;ftl-no-cjit-osr-validation&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateFTLOSRExitLiveness=true&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runDFGEager
</span><span class="lines">@@ -548,15 +550,15 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLEager
</span><del>-    run(&quot;ftl-eager&quot;, &quot;--useExperimentalFTL=true&quot;, *EAGER_OPTIONS)
</del><ins>+    run(&quot;ftl-eager&quot;, *(FTL_OPTIONS + EAGER_OPTIONS))
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLEagerNoCJITValidate
</span><del>-    run(&quot;ftl-eager-no-cjit&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateGraph=true&quot;, *EAGER_OPTIONS)
</del><ins>+    run(&quot;ftl-eager-no-cjit&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateGraph=true&quot;, *(FTL_OPTIONS + EAGER_OPTIONS))
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runFTLEagerNoCJITOSRValidation
</span><del>-    run(&quot;ftl-eager-no-cjit-osr-validation&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateFTLOSRExitLiveness=true&quot;, *EAGER_OPTIONS)
</del><ins>+    run(&quot;ftl-eager-no-cjit-osr-validation&quot;, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateFTLOSRExitLiveness=true&quot;, *(FTL_OPTIONS + EAGER_OPTIONS))
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runAlwaysTriggerCopyPhase
</span><span class="lines">@@ -639,15 +641,15 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runLayoutTestDefaultFTL
</span><del>-    runLayoutTest(&quot;ftl&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--testTheFTL=true&quot;)
</del><ins>+    runLayoutTest(&quot;ftl&quot;, &quot;--testTheFTL=true&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runLayoutTestFTLNoCJIT
</span><del>-    runLayoutTest(&quot;ftl-no-cjit&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--testTheFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;)
</del><ins>+    runLayoutTest(&quot;ftl-no-cjit&quot;, &quot;--testTheFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runLayoutTestFTLEagerNoCJIT
</span><del>-    runLayoutTest(&quot;ftl-eager-no-cjit&quot;, &quot;--useExperimentalFTL=true&quot;, &quot;--testTheFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;, *EAGER_OPTIONS)
</del><ins>+    runLayoutTest(&quot;ftl-eager-no-cjit&quot;, &quot;--testTheFTL=true&quot;, &quot;--enableConcurrentJIT=false&quot;, *(FTL_OPTIONS + EAGER_OPTIONS))
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def noFTLRunLayoutTest
</span><span class="lines">@@ -720,7 +722,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runMozillaTestDefaultFTL(mode, *extraFiles)
</span><del>-    runMozillaTest(&quot;ftl&quot;, mode, extraFiles, &quot;--useExperimentalFTL=true&quot;)
</del><ins>+    runMozillaTest(&quot;ftl&quot;, mode, extraFiles, *FTL_OPTIONS)
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runMozillaTestLLInt(mode, *extraFiles)
</span><span class="lines">@@ -736,7 +738,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def runMozillaTestFTLEagerNoCJITValidatePhases(mode, *extraFiles)
</span><del>-    runMozillaTest(&quot;ftl-eager-no-cjit-validate-phases&quot;, mode, extraFiles, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateBytecode=true&quot;, &quot;--validateGraphAtEachPhase=true&quot;, &quot;--useExperimentalFTL=true&quot;, *EAGER_OPTIONS)
</del><ins>+    runMozillaTest(&quot;ftl-eager-no-cjit-validate-phases&quot;, mode, extraFiles, &quot;--enableConcurrentJIT=false&quot;, &quot;--validateBytecode=true&quot;, &quot;--validateGraphAtEachPhase=true&quot;, *(FTL_OPTIONS + EAGER_OPTIONS))
</ins><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> def defaultRunMozillaTest(mode, *extraFiles)
</span></span></pre>
</div>
</div>

</body>
</html>