Reviewers: Jakob, mvstanton,

Message:
PTAL, Jakob at the test runner and Michael at the skipped tests...

Description:
Add infrastructure for skipping tests in GC stress mode.

Also move the GC stress configuration from the buildbot to the test runner.

BUG=

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

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

Affected files (+37, -57 lines):
  M test/mjsunit/allocation-site-info.js
  M test/mjsunit/array-constructor-feedback.js
  M test/mjsunit/array-feedback.js
  M test/mjsunit/array-literal-feedback.js
  M test/mjsunit/d8-performance-now.js
  M test/mjsunit/elements-kind.js
  M test/mjsunit/fast-prototype.js
  M test/mjsunit/mjsunit.status
  M test/mjsunit/opt-elements-kind.js
  M test/mjsunit/osr-elements-kind.js
  M test/mjsunit/regress/regress-165637.js
  M tools/run-deopt-fuzzer.py
  M tools/run-tests.py


Index: test/mjsunit/allocation-site-info.js
diff --git a/test/mjsunit/allocation-site-info.js b/test/mjsunit/allocation-site-info.js index 7885608c31623e490780bedb794a0383fd30ccf1..cd086d35060355e97a37f7f6aba8886d9660baea 100644
--- a/test/mjsunit/allocation-site-info.js
+++ b/test/mjsunit/allocation-site-info.js
@@ -35,11 +35,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
// support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));
 support_smi_only_arrays = true;

Index: test/mjsunit/array-constructor-feedback.js
diff --git a/test/mjsunit/array-constructor-feedback.js b/test/mjsunit/array-constructor-feedback.js index 7d6e08ec47c8c21f4a32c548f543b776ad75fe0e..7cd421bd1b86c16f7f3e096dc7be639f7d262022 100644
--- a/test/mjsunit/array-constructor-feedback.js
+++ b/test/mjsunit/array-constructor-feedback.js
@@ -35,11 +35,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
// support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));
 support_smi_only_arrays = true;

Index: test/mjsunit/array-feedback.js
diff --git a/test/mjsunit/array-feedback.js b/test/mjsunit/array-feedback.js
index 0471f65f40d039858197f5e73b23b5324969a896..4129be1f880cb7974ec15d784707b1e2412fea0f 100644
--- a/test/mjsunit/array-feedback.js
+++ b/test/mjsunit/array-feedback.js
@@ -35,11 +35,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
// support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));
 support_smi_only_arrays = true;

Index: test/mjsunit/array-literal-feedback.js
diff --git a/test/mjsunit/array-literal-feedback.js b/test/mjsunit/array-literal-feedback.js index c80040b80aebe26c7925ea0142b3f1461b71172d..cfda0f6d5f6006d4aac3aa3e288066bd5fb421d5 100644
--- a/test/mjsunit/array-literal-feedback.js
+++ b/test/mjsunit/array-literal-feedback.js
@@ -35,11 +35,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
// support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));
 support_smi_only_arrays = true;

Index: test/mjsunit/d8-performance-now.js
diff --git a/test/mjsunit/d8-performance-now.js b/test/mjsunit/d8-performance-now.js index 13eb1d3f006fa9405873d7e191d733bc4ac37b02..3e5485e81d943c4e0f49a431465284e7aff1b1e2 100644
--- a/test/mjsunit/d8-performance-now.js
+++ b/test/mjsunit/d8-performance-now.js
@@ -30,11 +30,6 @@
// Test the performance.now() function of d8. This test only makes sense with
 // d8.

-// Don't run this test in gc stress mode. Time differences may be long
-// due to garbage collections.
-%SetFlags("--gc-interval=-1");
-%SetFlags("--nostress-compaction");
-
 if (this.performance && performance.now) {
   (function run() {
     var start_test = performance.now();
Index: test/mjsunit/elements-kind.js
diff --git a/test/mjsunit/elements-kind.js b/test/mjsunit/elements-kind.js
index b02af65ed0ac07f641947cd1b64f99ed9c5f3b03..76fa2620677ca3476e1428498eef1842186135ee 100644
--- a/test/mjsunit/elements-kind.js
+++ b/test/mjsunit/elements-kind.js
@@ -26,7 +26,7 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 // Flags: --allow-natives-syntax --smi-only-arrays --expose-gc
-// Flags: --nostress-opt --nostress-compaction --gc-interval=-1
+// Flags: --nostress-opt --nostress-compaction

 // Test element kind of objects.
 // Since --smi-only-arrays affects builtins, its default setting at compile
Index: test/mjsunit/fast-prototype.js
diff --git a/test/mjsunit/fast-prototype.js b/test/mjsunit/fast-prototype.js
index a86b0ea0b2a8050fbeb525cb1ad4fd0e687c54fa..cdcc1a9ed68e8995b4642b5702166e781b46e211 100644
--- a/test/mjsunit/fast-prototype.js
+++ b/test/mjsunit/fast-prototype.js
@@ -26,11 +26,6 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 // Flags: --allow-natives-syntax --expose-gc
-
-// TODO(mstarzinger): This test does not succeed when GCs happen in
-// between prototype transitions, we disable GC stress for now.
-%SetFlags("--gc-interval=-1")
-
 // Flags: --noincremental-marking

 // Check that objects that are used for prototypes are in the fast mode.
Index: test/mjsunit/mjsunit.status
diff --git a/test/mjsunit/mjsunit.status b/test/mjsunit/mjsunit.status
index c28c5955a4cbc033e23b23d8c91183343514cc0c..2669d0f33b2b551071684bdb3de66b5c49047762 100644
--- a/test/mjsunit/mjsunit.status
+++ b/test/mjsunit/mjsunit.status
@@ -104,15 +104,25 @@
   # Tests verifying CHECK and ASSERT.
   'verify-check-false': [FAIL, NO_VARIANTS],
'verify-assert-false': [NO_VARIANTS, ['mode == release', PASS], ['mode == debug', FAIL]],
-
- # TODO(machenbach): Temporarily marked as flaky until there is infrastructure
-  # to disable these tests on GC stress.
-  'elements-kind': [PASS, ['mode == debug and system == linux', FLAKY]],
- 'osr-elements-kind': [PASS, ['mode == debug and system == linux', FLAKY]], - 'array-literal-feedback': [PASS, ['mode == debug and system == linux', FLAKY]],
 }],  # ALWAYS

##############################################################################
+['gc_stress == True', {
+  # Skip tests not suitable for GC stress.
+  'allocation-site-info': [SKIP],
+  'array-constructor-feedback': [SKIP],
+  'array-feedback': [SKIP],
+  'array-literal-feedback': [SKIP],
+  'd8-performance-now': [SKIP],
+  'elements-kind': [SKIP],
+  'fast-prototype': [SKIP],
+  'opt-elements-kind': [SKIP],
+  'osr-elements-kind': [SKIP],
+  'regress/regress-165637': [SKIP],
+  'regress/regress-2249': [SKIP],
+}],  # 'gc_stress == True'
+
+##############################################################################
 ['arch == arm or arch == android_arm', {

   # Slow tests which times out in debug mode.
Index: test/mjsunit/opt-elements-kind.js
diff --git a/test/mjsunit/opt-elements-kind.js b/test/mjsunit/opt-elements-kind.js index a7811c81eafa87266e96374a6aec90ccf74cecf7..f26bb4206778bfe7bda6129b7d4e66eae8edb5c2 100644
--- a/test/mjsunit/opt-elements-kind.js
+++ b/test/mjsunit/opt-elements-kind.js
@@ -39,11 +39,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
 support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));

 if (support_smi_only_arrays) {
Index: test/mjsunit/osr-elements-kind.js
diff --git a/test/mjsunit/osr-elements-kind.js b/test/mjsunit/osr-elements-kind.js index af4b5ec9f180d39b5b1823d02886da63acfcb053..2ad3c4348731e8886aed8023168c342b349741d8 100644
--- a/test/mjsunit/osr-elements-kind.js
+++ b/test/mjsunit/osr-elements-kind.js
@@ -39,11 +39,6 @@
 // in this test case.  Depending on whether smi-only arrays are actually
// enabled, this test takes the appropriate code path to check smi-only arrays.

-// Reset the GC stress mode to be off. Needed because AllocationMementos only -// live for one gc, so a gc that happens in certain fragile areas of the test
-// can break assumptions.
-%SetFlags("--gc-interval=-1")
-
 support_smi_only_arrays = %HasFastSmiElements(new Array(1,2,3,4,5,6,7,8));

 if (support_smi_only_arrays) {
Index: test/mjsunit/regress/regress-165637.js
diff --git a/test/mjsunit/regress/regress-165637.js b/test/mjsunit/regress/regress-165637.js index 72af528a86b5e622fb5d802638672e66e1b9d183..84c9041216cb6045c036054b67e470c7615f5639 100644
--- a/test/mjsunit/regress/regress-165637.js
+++ b/test/mjsunit/regress/regress-165637.js
@@ -45,10 +45,6 @@ function do_slices() {
   return Date.now() - start;
 }

-// Reset the GC stress mode to be off. Needed so that the runtime of this test
-// stays within bounds even if we run in GC stress mode.
-%SetFlags("--gc-interval=-1 --noforce-marking-deque-overflows");
-
// Should never take more than 3 seconds (if the bug is fixed, the test takes
 // considerably less time than 3 seconds).
 assertTrue(do_slices() < (3 * 1000));
Index: tools/run-deopt-fuzzer.py
diff --git a/tools/run-deopt-fuzzer.py b/tools/run-deopt-fuzzer.py
index 292cf002f9b3ff0b7f12de73486df3a7cbdec85f..401ae046ed9a2ae3abc60ca5ebd2dcf1053c8109 100755
--- a/tools/run-deopt-fuzzer.py
+++ b/tools/run-deopt-fuzzer.py
@@ -363,12 +363,13 @@ def Execute(arch, mode, args, options, suites, workspace):

   # Find available test suites and read test cases from them.
   variables = {
-    "mode": mode,
     "arch": arch,
-    "system": utils.GuessOS(),
-    "isolates": options.isolates,
     "deopt_fuzzer": True,
+    "gc_stress": False,
+    "isolates": options.isolates,
+    "mode": mode,
     "no_i18n": False,
+    "system": utils.GuessOS(),
   }
   all_tests = []
   num_tests = 0
Index: tools/run-tests.py
diff --git a/tools/run-tests.py b/tools/run-tests.py
index 15c42d0379fa8f750c6044abde92bf91eb4d547d..e032a55f508bbadd6d950ccd4bc3358848f893d7 100755
--- a/tools/run-tests.py
+++ b/tools/run-tests.py
@@ -68,6 +68,11 @@ MODE_FLAGS = {
     "release" : ["--nobreak-on-abort", "--nodead-code-elimination",
                  "--nofold-constants"]}

+GC_STRESS_FLAGS = ["--gc-interval=500", "--stress-compaction",
+                   "--concurrent-recompilation-queue-length=64",
+                   "--concurrent-recompilation-delay=500",
+                   "--concurrent-recompilation"]
+
 SUPPORTED_ARCHS = ["android_arm",
                    "android_ia32",
                    "arm",
@@ -108,6 +113,9 @@ def BuildOptions():
   result.add_option("--pass-fail-tests",
                     help="Regard pass|fail tests (run|skip|dontcare)",
                     default="dontcare")
+  result.add_option("--gc-stress",
+                    help="Switch on GC stress mode",
+                    default=False, action="store_true")
   result.add_option("--command-prefix",
help="Prepended to each shell command used to run a test",
                     default="")
@@ -220,6 +228,10 @@ def ProcessOptions(options):
     options.no_network = True
   options.command_prefix = shlex.split(options.command_prefix)
   options.extra_flags = shlex.split(options.extra_flags)
+
+  if options.gc_stress:
+    options.extra_flags += GC_STRESS_FLAGS
+
   if options.j == 0:
     options.j = multiprocessing.cpu_count()

@@ -373,12 +385,13 @@ def Execute(arch, mode, args, options, suites, workspace):

   # Find available test suites and read test cases from them.
   variables = {
-    "mode": mode,
     "arch": arch,
-    "system": utils.GuessOS(),
-    "isolates": options.isolates,
     "deopt_fuzzer": False,
+    "gc_stress": options.gc_stress,
+    "isolates": options.isolates,
+    "mode": mode,
     "no_i18n": options.no_i18n,
+    "system": utils.GuessOS(),
   }
   all_tests = []
   num_tests = 0


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