Change run-webkit-tests.py and run-jsc-stress-tests to use a smaller JS stack size...
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2016 17:04:14 +0000 (17:04 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 11 Jul 2016 17:04:14 +0000 (17:04 +0000)
https://bugs.webkit.org/show_bug.cgi?id=159524

Reviewed by Michael Saboff.

Tools:

Forced tests to run with only a 1.5M JS stack size instead of the default 4M.
Also fixed up some tests to behave better to work with this new limit.  This
should make stack overflow tests complete sooner.

* Scripts/run-jsc-stress-tests:
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(main):

LayoutTests:

* js/dom/deep-recursion-test.html:
* js/script-tests/stack-overflow-arrity-catch.js:
(funcWith20Args):

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

LayoutTests/ChangeLog
LayoutTests/js/dom/deep-recursion-test.html
LayoutTests/js/script-tests/stack-overflow-arrity-catch.js
Tools/ChangeLog
Tools/Scripts/run-jsc-stress-tests
Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py

index d4470f8..5a7a93d 100644 (file)
@@ -1,3 +1,14 @@
+2016-07-11  Mark Lam  <mark.lam@apple.com>
+
+        Change run-webkit-tests.py and run-jsc-stress-tests to use a smaller JS stack size for testing.
+        https://bugs.webkit.org/show_bug.cgi?id=159524
+
+        Reviewed by Michael Saboff.
+
+        * js/dom/deep-recursion-test.html:
+        * js/script-tests/stack-overflow-arrity-catch.js:
+        (funcWith20Args):
+
 2016-07-11  Fujii Hironori  <Hironori.Fujii@sony.com>
 
         Using dpi unit in sizes attribute raises SIGSEGV
index 7a80e92..12bee99 100644 (file)
@@ -13,7 +13,7 @@
     }
 
     try {
-        simpleRecursion(17472);
+        simpleRecursion(10000);
     } catch (ex) {
         debug("FAIL: " + ex);
     }
index c927845..c4cdca8 100644 (file)
@@ -1,10 +1,13 @@
 description('Test that if an arrity check causes a stack overflow, the exception goes to the right catch');
 
-function funcWith20Args(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
+function funcWith40Args(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8,
                         arg9, arg10, arg11, arg12, arg13, arg14, arg15,
-                        arg16, arg17, arg18, arg19, arg20)
+                        arg16, arg17, arg18, arg19, arg20,
+                        arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28,
+                        arg29, arg30, arg31, arg32, arg33, arg34, arg35,
+                        arg36, arg37, arg38, arg39, arg40)
 {
-    debug("ERROR: Shouldn't arrive in 20 arg function!");
+    debug("ERROR: Shouldn't arrive in 40 arg function!");
 }
 
 var gotRightCatch = false, gotWrongCatch1 = false, gotWrongCatch2 = false;
@@ -23,7 +26,7 @@ function test1()
         }
         
         try {
-            funcWith20Args(1, 2, 3);
+            funcWith40Args(1, 2, 3);
         } catch (err2) {
             gotRightCatch = true;
         }
@@ -44,7 +47,7 @@ function test2()
         // Should get here because of stack overflow,
         // now cause a stack overflow exception due to arrity processing
         try {
-            funcWith20Args(1, 2, 3, 4, 5, 6);
+            funcWith40Args(1, 2, 3, 4, 5, 6);
         } catch (err2) {
             gotRightCatch = true;
         }
index 0a790f3..eff55e2 100644 (file)
@@ -1,3 +1,18 @@
+2016-07-11  Mark Lam  <mark.lam@apple.com>
+
+        Change run-webkit-tests.py and run-jsc-stress-tests to use a smaller JS stack size for testing.
+        https://bugs.webkit.org/show_bug.cgi?id=159524
+
+        Reviewed by Michael Saboff.
+
+        Forced tests to run with only a 1.5M JS stack size instead of the default 4M.
+        Also fixed up some tests to behave better to work with this new limit.  This
+        should make stack overflow tests complete sooner.
+
+        * Scripts/run-jsc-stress-tests:
+        * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
+        (main):
+
 2016-07-11  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         [GTK] Whitespace fixes in install-dependencies script
index 32c8999..0d922cb 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env ruby
 
-# Copyright (C) 2013-2015 Apple Inc. All rights reserved.
+# Copyright (C) 2013-2016 Apple Inc. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -426,7 +426,8 @@ end
 $numFailures = 0
 $numPasses = 0
 
-BASE_OPTIONS = ["--useFTLJIT=false", "--useFunctionDotArguments=true"]
+# We force all tests to use a smaller (1.5M) stack so that stack overflow tests can run faster.
+BASE_OPTIONS = ["--useFTLJIT=false", "--useFunctionDotArguments=true", "--maxPerThreadStackUsage=1572864"]
 EAGER_OPTIONS = ["--thresholdForJITAfterWarmUp=10", "--thresholdForJITSoon=10", "--thresholdForOptimizeAfterWarmUp=20", "--thresholdForOptimizeAfterLongWarmUp=20", "--thresholdForOptimizeSoon=20", "--thresholdForFTLOptimizeAfterWarmUp=20", "--thresholdForFTLOptimizeSoon=20", "--maximumEvalCacheableSourceLength=150000"]
 NO_CJIT_OPTIONS = ["--useConcurrentJIT=false", "--thresholdForJITAfterWarmUp=100"]
 FTL_OPTIONS = ["--useFTLJIT=true"]
index a556ee0..d9f8900 100755 (executable)
@@ -1,6 +1,6 @@
 # Copyright (C) 2010 Google Inc. All rights reserved.
 # Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-# Copyright (C) 2011 Apple Inc. All rights reserved.
+# Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions are
@@ -74,6 +74,10 @@ def main(argv, stdout, stderr):
         return EXCEPTIONAL_EXIT_STATUS
 
     try:
+        # Force all tests to use a smaller stack so that stack overflow tests can run faster.
+        stackSizeInBytes = 1.5 * 1024 * 1024
+        options.additional_env_var.append('JSC_maxPerThreadStackUsage=' + str(stackSizeInBytes))
+        options.additional_env_var.append('__XPC_JSC_maxPerThreadStackUsage=' + str(stackSizeInBytes))
         run_details = run(port, options, args, stderr)
         if run_details.exit_code != -1 and not run_details.initial_results.keyboard_interrupted:
             bot_printer = buildbot_results.BuildBotPrinter(stdout, options.debug_rwt_logging)