RESOLVED FIXED 182730
Many stress tests fail with JIT disabled
https://bugs.webkit.org/show_bug.cgi?id=182730
Summary Many stress tests fail with JIT disabled
Tomas Popela
Reported 2018-02-13 07:29:00 PST
Compiling JSC with: $ build-webkit --jsc-only --release --system-malloc --no-jit and running the stress suite with: $ run-jsc-stress-tests --jsc $(pwd)/WebKitBuild/Release/bin/jsc --no-jit -v JSTests/stress will make some of the tests fail with following: Running stress/arith-abs-on-various-types.js.default stress/arith-abs-on-various-types.js.default: Exception: The call without arguments should never exit. stress/arith-abs-on-various-types.js.default: ERROR: Unexpected exit code: 3 FAIL: stress/arith-abs-on-various-types.js.default Running stress/arith-abs-overflow.js.default Running stress/arith-abs-to-arith-negate-range-optimizaton.js.default stress/arith-abs-to-arith-negate-range-optimizaton.js.default: Exception: Failed optimizing testCheckedBetweenIntMinAndZeroExclusive(). None of the tested case need to OSR Exit. stress/arith-abs-to-arith-negate-range-optimizaton.js.default: ERROR: Unexpected exit code: 3 FAIL: stress/arith-abs-to-arith-negate-range-optimizaton.js.default ... What the failures have common is that they fail while testing the return value of numberOfDFGCompiles(). The problem is that when running with JIT disabled the return value is on purpose 1000000.0 - https://trac.webkit.org/browser/webkit/trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp?rev=212778#L77 . We should skip these tests when JIT is disabled as they are not intended to work there.
Attachments
Patch (13.01 KB, patch)
2018-02-13 07:38 PST, Tomas Popela
no flags
Tomas Popela
Comment 1 2018-02-13 07:38:00 PST
Saam Barati
Comment 2 2018-02-15 08:07:59 PST
Comment on attachment 333690 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=333690&action=review > JSTests/stress/arith-abs-on-various-types.js:1 > +//@ skip if not $jitTests I think this makes the line below not parsed. I think the stress tests harness only parses a single line. It’s worth verifying. If that’s right, you just want to make this entire line an if/else and combine in with the run type below
Saam Barati
Comment 3 2018-02-15 08:10:45 PST
(In reply to Saam Barati from comment #2) > Comment on attachment 333690 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=333690&action=review > > > JSTests/stress/arith-abs-on-various-types.js:1 > > +//@ skip if not $jitTests > > I think this makes the line below not parsed. I think the stress tests > harness only parses a single line. It’s worth verifying. If that’s right, > you just want to make this entire line an if/else and combine in with the > run type below Never mind, I see you have a patch to make this work with skipping
Saam Barati
Comment 4 2018-02-15 08:26:39 PST
Comment on attachment 333690 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=333690&action=review > JSTests/ChangeLog:9 > + the return value of numberOfDFGCompiles(), which is always set to Which other tests use this function? Maybe it should just return 0 instead of a really large number?
Tomas Popela
Comment 5 2018-02-15 08:37:36 PST
(In reply to Saam Barati from comment #4) > Comment on attachment 333690 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=333690&action=review > > > JSTests/ChangeLog:9 > > + the return value of numberOfDFGCompiles(), which is always set to > > Which other tests use this function? Maybe it should just return 0 instead > of a really large number? arith-abs-on-various-types.js arith-abs-to-arith-negate-range-optimizaton.js arith-acos-on-various-types.js arith-acosh-on-various-types.js arith-asin-on-various-types.js arith-asinh-on-various-types.js arith-atan-on-various-types.js arith-atanh-on-various-types.js arith-cbrt-on-various-types.js arith-ceil-on-various-types.js arith-clz32-on-various-types.js arith-cos-on-various-types.js arith-cosh-on-various-types.js arith-expm1-on-various-types.js arith-floor-on-various-types.js arith-fround-on-various-types.js arith-log-on-various-types.js arith-log10-on-various-types.js arith-log2-on-various-types.js arith-negate-on-various-types.js arith-round-on-various-types.js arith-sin-on-various-types.js arith-sinh-on-various-types.js arith-sqrt-on-various-types.js arith-tan-on-various-types.js arith-tanh-on-various-types.js arith-trunc-on-various-types.js check-string-ident.js compare-strict-eq-on-various-types.js math-pow-coherency.js pow-coherency.js resources/standalone-pre.js typedarray-intrinsic-getters-change-prototype.js From these tests some use "<=": 0 $ git grep numberOfDFGCompiles | grep "<" arith-ceil-on-various-types.js:146: return numberOfDFGCompiles(testFunction) <= 2; arith-ceil-on-various-types.js:148: return numberOfDFGCompiles(testFunction) <= 1; arith-floor-on-various-types.js:146: return numberOfDFGCompiles(testFunction) <= 2; arith-floor-on-various-types.js:148: return numberOfDFGCompiles(testFunction) <= 1; arith-negate-on-various-types.js:126: return numberOfDFGCompiles(testFunction) <= 2; arith-negate-on-various-types.js:128: return numberOfDFGCompiles(testFunction) <= 1; arith-round-on-various-types.js:146: return numberOfDFGCompiles(testFunction) <= 2; arith-round-on-various-types.js:148: return numberOfDFGCompiles(testFunction) <= 1; arith-trunc-on-various-types.js:146: return numberOfDFGCompiles(testFunction) <= 2; arith-trunc-on-various-types.js:148: return numberOfDFGCompiles(testFunction) <= 1; resources/standalone-pre.js:295: if (testRunner.numberOfDFGCompiles(argument.f[i]) < numberOfCompiles) resources/standalone-pre.js:299: if (testRunner.numberOfDFGCompiles(argument.f) < numberOfCompiles) typedarray-intrinsic-getters-change-prototype.js:21: while(numberOfDFGCompiles(foo) < 1) {
Saam Barati
Comment 6 2018-02-15 08:45:15 PST
Comment on attachment 333690 [details] Patch r=me It looks like this returns a large number because code like that while loop does: while (#compiles < 1) ...
Tomas Popela
Comment 7 2018-02-15 08:49:58 PST
Comment on attachment 333690 [details] Patch Clearing flags on attachment: 333690 Committed r228513: <https://trac.webkit.org/changeset/228513>
Tomas Popela
Comment 8 2018-02-15 08:50:02 PST
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 9 2018-02-15 08:50:25 PST
Tomas Popela
Comment 10 2018-04-12 02:22:13 PDT
Note You need to log in before you can comment on or make changes to this bug.