Only run FTL tests if we have the FTL
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 7 Sep 2013 23:07:06 +0000 (23:07 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 7 Sep 2013 23:07:06 +0000 (23:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=120974

Source/JavaScriptCore:

Reviewed by Geoffrey Garen.

The test infrastructure is now smart enough to not pass --useExperimentalFTL=true
unless it knows that we have the FTL.

* dfg/DFGTierUpCheckInjectionPhase.cpp:
(JSC::DFG::TierUpCheckInjectionPhase::run):

Tools:

Reviewed by Geoffrey Garen.

Pass --ftl-jit down into run-jsc-stress-tests so that it knows what test
variants to run.

* Scripts/build-jsc:
* Scripts/run-javascriptcore-tests:
* Scripts/run-jsc-stress-tests:

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp
Tools/ChangeLog
Tools/Scripts/build-jsc
Tools/Scripts/run-javascriptcore-tests
Tools/Scripts/run-jsc-stress-tests

index d321718..ea85549 100644 (file)
@@ -1,3 +1,16 @@
+2013-09-07  Filip Pizlo  <fpizlo@apple.com>
+
+        Only run FTL tests if we have the FTL
+        https://bugs.webkit.org/show_bug.cgi?id=120974
+
+        Reviewed by Geoffrey Garen.
+        
+        The test infrastructure is now smart enough to not pass --useExperimentalFTL=true
+        unless it knows that we have the FTL.
+
+        * dfg/DFGTierUpCheckInjectionPhase.cpp:
+        (JSC::DFG::TierUpCheckInjectionPhase::run):
+
 2013-09-07  Anders Carlsson  <andersca@apple.com>
 
         Get rid of PassOwnArrayPtr
index dbb984f..d51a1f0 100644 (file)
@@ -82,6 +82,7 @@ public:
         
         return true;
 #else // ENABLE(FTL_JIT)
+        RELEASE_ASSERT_NOT_REACHED();
         return false;
 #endif // ENABLE(FTL_JIT)
     }
index 85cc738..a8b9294 100644 (file)
@@ -1,3 +1,17 @@
+2013-09-07  Filip Pizlo  <fpizlo@apple.com>
+
+        Only run FTL tests if we have the FTL
+        https://bugs.webkit.org/show_bug.cgi?id=120974
+
+        Reviewed by Geoffrey Garen.
+        
+        Pass --ftl-jit down into run-jsc-stress-tests so that it knows what test
+        variants to run.
+
+        * Scripts/build-jsc:
+        * Scripts/run-javascriptcore-tests:
+        * Scripts/run-jsc-stress-tests:
+
 2013-09-07  Santosh Mahto  <santosh.ma@samsung.com>
 
         removing --dialog-element from build-webkit --help option message
index e8e809a..d848d85 100755 (executable)
@@ -50,7 +50,7 @@ EOF
 GetOptions(
     'coverage!' => \$coverageSupport,
     'help' => \$showHelp,
-    'ftl-jit' => \$ftlJIT
+    'ftl-jit!' => \$ftlJIT
 );
 
 if ($showHelp) {
index e28d3c0..b4da451 100755 (executable)
@@ -80,6 +80,8 @@ my $runFastJS = !isAppleWinWebKit();
 # https://bugs.webkit.org/show_bug.cgi?id=120809
 my $runJSCStress = isAppleMacWebKit();
 
+my $enableFTL = 0;
+
 my $programName = basename($0);
 my $buildJSCDefault = $buildJSC ? "will check" : "will not check";
 my $testapiDefault = $runTestAPI ? "will run" : "will not run";
@@ -91,6 +93,7 @@ Usage: $programName [options] [options to pass to build system]
   --help                        Show this help message
   --jsDriver-args=              A string of arguments to pass to jsDriver.pl
   --root=                       Path to pre-built root containing jsc
+  --[no-]ftl-jit                Turn the FTL JIT on or off
   --[no-]build                  Check (or don't check) to see if the jsc build is up-to-date (default: $buildJSCDefault)
   --[no-]testapi                Run (or don't run) testapi (default: $testapiDefault)
   --[no-]mozilla                Run (or don't run) the Mozilla tests (default: $mozillaDefault)
@@ -102,6 +105,7 @@ GetOptions(
     'j|jsDriver-args=s' => \$jsDriverArgs,
     'root=s' => \$root,
     'build!' => \$buildJSC,
+    'ftl-jit!' => \$enableFTL,
     'testapi!' => \$runTestAPI,
     'mozilla!' => \$runMozilla,
     'fast-js!' => \$runFastJS,
@@ -112,6 +116,11 @@ GetOptions(
 # Assume any arguments left over from GetOptions are assumed to be build arguments
 my @buildArgs = @ARGV;
 
+# The --ftl-jit argument gets passed as a build argument.
+if ($enableFTL) {
+    push(@buildArgs, '--ftl-jit');
+}
+
 # Arguments passed to --jsDriver-args (if any) are passed to jsDriver.pl
 my @jsArgs = split(" ", $jsDriverArgs);
 
@@ -236,6 +245,9 @@ if ($runJSCStress) {
         "PerformanceTests/SunSpider/tests/v8-v6",
         "LayoutTests/fast/js/regress/script-tests"
     );
+    if ($enableFTL) {
+        push(@jscStressDriverCmd, "--ftl-jit");
+    }
     print "Running: " . join(" ", @jscStressDriverCmd) . "\n";
     my $result = system(@jscStressDriverCmd);
     exit exitStatus($result) if $result;
index 8a93d43..3d58ed8 100755 (executable)
@@ -34,6 +34,7 @@ rescue => e
 end
 
 $jscPath = nil
+$enableFTL = false
 $collections = []
 $outputDir = Pathname.new("results")
 
@@ -41,6 +42,7 @@ def usage
     puts "run-jsc-stress-tests -j <shell path> <collections path> [<collections path> ...]"
     puts
     puts "--jsc            (-j)   Path to JavaScriptCore. This option is required."
+    puts "--ftl-jit               Indicate that we have the FTL JIT."
     puts "--output-dir     (-o)   Path where to put results. Default is #{$outputDir}."
     puts "--help           (-h)   Print this message."
     exit 1
@@ -48,6 +50,7 @@ end
 
 GetoptLong.new(['--help', '-h', GetoptLong::NO_ARGUMENT],
                ['--jsc', '-j', GetoptLong::REQUIRED_ARGUMENT],
+               ['--ftl-jit', GetoptLong::NO_ARGUMENT],
                ['--output-dir', '-o', GetoptLong::REQUIRED_ARGUMENT]).each {
     | opt, arg |
     case opt
@@ -57,6 +60,8 @@ GetoptLong.new(['--help', '-h', GetoptLong::NO_ARGUMENT],
         $jscPath = Pathname.new(arg).realpath
     when '--output-dir'
         $outputDir = Pathname.new(arg)
+    when '--ftl-jit'
+        $enableFTL = true
     end
 }
 
@@ -67,6 +72,8 @@ end
 
 $numFailures = 0
 
+EAGER_OPTIONS = ["--enableConcurrentJIT=false", "--thresholdForJITAfterWarmUp=10", "--thresholdForJITSoon=10", "--thresholdForOptimizeAfterWarmUp=20", "--thresholdForOptimizeAfterLongWarmUp=20", "--thresholdForOptimizeSoon=20", "--thresholdForFTLOptimizeAfterWarmUp=20", "--thresholdForFTLOptimizeSoon=20"]
+
 def run(kind, *options)
     name = "#{$benchmark}.#{kind}"
     print "#{$collectionName}/#{name}: "
@@ -109,16 +116,24 @@ def runFTLNoCJIT
     run("ftl-no-cjit", "--enableConcurrentJIT=false", "--useExperimentalFTL=true")
 end
 
+def runDFGEager
+    run("dfg-eager", *EAGER_OPTIONS)
+end
+
 def runFTLEager
-    run("ftl-eager", "--enableConcurrentJIT=false", "--useExperimentalFTL=true", "--thresholdForJITAfterWarmUp=10", "--thresholdForJITSoon=10", "--thresholdForOptimizeAfterWarmUp=20", "--thresholdForOptimizeAfterLongWarmUp=20", "--thresholdForOptimizeSoon=20", "--thresholdForFTLOptimizeAfterWarmUp=20", "--thresholdForFTLOptimizeSoon=20")
+    run("ftl-eager", "--useExperimentalFTL=true", *EAGER_OPTIONS)
 end
 
 def defaultRun
     runDefault
     runNoCJIT
-    runDefaultFTL
-    runFTLNoCJIT
-    runFTLEager
+    if $enableFTL
+        runDefaultFTL
+        runFTLNoCJIT
+        runFTLEager
+    else
+        runDFGEager
+    end
 end
 
 def skip