WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
144039
Enable FTL JIT by default on AArch64
https://bugs.webkit.org/show_bug.cgi?id=144039
Summary
Enable FTL JIT by default on AArch64
Csaba Osztrogonác
Reported
2015-04-22 02:38:56 PDT
There are 2 bugs cause failures (crashes!) with FTL JIT on Linux (X86_64 and AArch64 too):
bug143087
and
bug143089
( We might want to bump to LLVM 3.6 -
bug143821
after somebody fixed the infinite loop bug in it. ) If the FTL JIT is fast and stable enough on AArch64, maybe we should enable it by default.
Attachments
AArch64 Linux performance results
(49.25 KB, text/plain)
2015-04-22 03:58 PDT
,
Csaba Osztrogonác
no flags
Details
Patch
(2.51 KB, patch)
2017-05-09 08:44 PDT
,
Zan Dobersek
no flags
Details
Formatted Diff
Diff
Patch
(6.68 KB, patch)
2017-05-10 00:03 PDT
,
Zan Dobersek
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Csaba Osztrogonác
Comment 1
2015-04-22 03:58:51 PDT
Created
attachment 251308
[details]
AArch64 Linux performance results The deviation is extremely big, so I have no idea how can we get trusty performance results on an AArch64 board.
Csaba Osztrogonác
Comment 2
2015-04-22 07:35:03 PDT
(In reply to
comment #1
)
> Created
attachment 251308
[details]
> AArch64 Linux performance results > > The deviation is extremely big, so I have no idea how can > we get trusty performance results on an AArch64 board.
I found the reason, we have different cores (big.LITTLE) and Linux dynamically scales the frequency. I'll try to set fixed frequency and lock the run on same cores.
Csaba Osztrogonác
Comment 3
2016-05-17 10:22:49 PDT
Now there is no LLVM, but B3 based FTL JIT. I tested the conformance on AArch64 Linux with it. With disabled FTL JIT ---------------------- ** The following JSC stress test failures have been introduced: executableAllocationFuzz.yaml/executableAllocationFuzz/v8-raytrace.js.executable-allocation-fuzz-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-no-llint jsc-layout-tests.yaml/js/slow-stress/script-tests/variadic-closure-call.js.default mozilla-tests.yaml/js1_2/Array/slice.js.mozilla-baseline regress/script-tests/get-by-id-bimorphic-check-structure-elimination.js.no-llint regress/script-tests/hoist-poly-check-structure.js.dfg-eager-no-cjit-validate regress/script-tests/v8-regexp-search.js.default stress/ftl-put-by-id-setter-exception.js.dfg-maximal-flush-validate-no-cjit stress/proxy-revoke.js.no-llint stress/super-property-access.js.no-cjit-validate-phases stress/v8-splay-strict.js.no-cjit-validate-phases v8-v6/v8-crypto.js.no-llint Results for JSC stress tests: 27 failures found. With enabled FTL JIT ---------------------- ** The following JSC stress test failures have been introduced: jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/number-toLocaleString.js.layout-no-llint mozilla-tests.yaml/ecma/String/15.5.4.4-1.js.mozilla-baseline regress/script-tests/call-spread-call.js.always-trigger-copy-phase regress/script-tests/call-spread-call.js.default regress/script-tests/call-spread-call.js.dfg-maximal-flush-validate-no-cjit regress/script-tests/deltablue-for-of.js.ftl-eager-no-cjit regress/script-tests/deltablue-for-of.js.ftl-no-cjit-no-inline-validate regress/script-tests/deltablue-for-of.js.no-llint regress/script-tests/generator-fib.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-sunspider-access-nsieve.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-with-several-types.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/richards-empty-try-catch.js.dfg-eager-no-cjit-validate regress/script-tests/undefined-property-access.js.default regress/script-tests/varargs-call.js.ftl-no-cjit-validate-sampling-profiler stress/array-concat-spread-object.js.ftl-no-cjit-validate-sampling-profiler stress/array-concat-with-slow-indexingtypes.js.dfg-eager-no-cjit-validate stress/arrowfunction-lexical-bind-arguments-non-strict-1.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-this-8.js.ftl-no-cjit-validate-sampling-profiler stress/double-rep-with-undefined.js.ftl-no-cjit-validate-sampling-profiler stress/es6-default-parameters.js.ftl-no-cjit-validate-sampling-profiler stress/floating-point-div-to-mul.js.dfg-maximal-flush-validate-no-cjit stress/ftl-library-inlining-loops.js.no-llint stress/ftl-to-ftl-arity-fixup.js.ftl-no-cjit-validate-sampling-profiler stress/ftl-try-catch-varargs-call-throws.js.ftl-no-cjit-validate-sampling-profiler stress/generator-function-declaration-sinking-put.js.ftl-no-cjit-validate-sampling-profiler stress/math-floor-basics.js.dfg-maximal-flush-validate-no-cjit stress/proxy-prevent-extensions.js.ftl-no-cjit-no-inline-validate stress/proxy-revoke.js.no-llint stress/spread-calling.js.ftl-no-cjit-validate-sampling-profiler stress/super-property-access.js.ftl-eager-no-cjit stress/super-property-access.js.no-llint stress/tail-call-no-stack-overflow.js.ftl-no-cjit-validate-sampling-profiler stress/typedarray-functions-with-neutered.js.ftl-no-cjit-validate-sampling-profiler v8-v6/v8-crypto.js.dfg-eager v8-v6/v8-deltablue.js.ftl-eager-no-cjit v8-v6/v8-splay.js.no-llint Results for JSC stress tests: 63 failures found.
Csaba Osztrogonác
Comment 4
2016-05-17 10:23:56 PDT
cc-ing GTK guys, maybe you are interested in enabling FTL JIT on AArch64 and fixing random crashes on it.
Csaba Osztrogonác
Comment 5
2016-07-13 08:40:11 PDT
AArch64 Linux backend seems to be quite stable nowadays, because the normal 10-20 random crashes went away near
r202199
-
r202216
. There were only 2 JSC changes that time, I'll check which fixed the random crashes: -
https://trac.webkit.org/changeset/202214
-
https://trac.webkit.org/changeset/202205
updated status: ================ without FTL JIT ---------------- ** The following JSC stress test failures have been introduced: jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/stringimpl-to-jsstring-on-large-strings-1.js.layout-no-cjit mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-baseline mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-dfg-eager-no-cjit-validate-phases mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-llint Results for JSC stress tests: 17 failures found. with FTL JIT -------------- ** The following JSC stress test failures have been introduced: jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-collator.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-datetimeformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-dfg-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl-eager-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-ftl-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-cjit jsc-layout-tests.yaml/js/script-tests/intl-numberformat.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/stringimpl-to-jsstring-on-large-strings-1.js.layout jsc-layout-tests.yaml/js/script-tests/stringimpl-to-jsstring-on-large-strings-3.js.layout-ftl jsc-layout-tests.yaml/js/script-tests/stringimpl-to-jsstring-on-large-strings-3.js.layout-no-llint mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-baseline mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-dfg-eager-no-cjit-validate-phases mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-ftl mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-ftl-eager-no-cjit-validate-phases mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-llint regress/script-tests/generator-fib.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-sunspider-access-nsieve.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-with-several-types.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/varargs-call.js.ftl-no-cjit-validate-sampling-profiler stress/arrow-functions-as-default-parameter-values.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-arguments-strict.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-superproperty.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-this-8.js.ftl-no-cjit-validate-sampling-profiler stress/double-rep-with-undefined.js.ftl-no-cjit-validate-sampling-profiler stress/ftl-to-ftl-arity-fixup.js.ftl-no-cjit-validate-sampling-profiler stress/ftl-try-catch-varargs-call-throws.js.ftl-no-cjit-validate-sampling-profiler stress/generator-function-declaration-sinking-osrexit.js.ftl-no-cjit-validate-sampling-profiler stress/generator-function-declaration-sinking-put.js.ftl-no-cjit-validate-sampling-profiler stress/spread-calling.js.ftl-no-cjit-validate-sampling-profiler stress/tail-call-no-stack-overflow.js.ftl-no-cjit-validate-sampling-profiler Results for JSC stress tests: 45 failures found. Extra crashes with FTL JIT --------------------------- regress/script-tests/generator-fib.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-sunspider-access-nsieve.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/generator-with-several-types.js.ftl-no-cjit-validate-sampling-profiler regress/script-tests/varargs-call.js.ftl-no-cjit-validate-sampling-profiler stress/arrow-functions-as-default-parameter-values.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-arguments-strict.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-superproperty.js.ftl-no-cjit-validate-sampling-profiler stress/arrowfunction-lexical-bind-this-8.js.ftl-no-cjit-validate-sampling-profiler stress/double-rep-with-undefined.js.ftl-no-cjit-validate-sampling-profiler stress/ftl-to-ftl-arity-fixup.js.ftl-no-cjit-validate-sampling-profiler stress/ftl-try-catch-varargs-call-throws.js.ftl-no-cjit-validate-sampling-profiler stress/generator-function-declaration-sinking-osrexit.js.ftl-no-cjit-validate-sampling-profiler stress/generator-function-declaration-sinking-put.js.ftl-no-cjit-validate-sampling-profiler stress/spread-calling.js.ftl-no-cjit-validate-sampling-profiler stress/tail-call-no-stack-overflow.js.ftl-no-cjit-validate-sampling-profiler
Csaba Osztrogonác
Comment 6
2017-03-06 21:39:24 PST
Update: There are a few crashes/failures with enabled FTL JIT on AArch64 Linux: (tested on
r213461
) stress/array-concat-spread-object.js.ftl-no-cjit-validate-sampling-profiler: Exception: failed normally with an object stress/array-concat-spread-object.js.ftl-no-cjit-validate-sampling-profiler: ERROR: Unexpected exit code: 3 stress/class-syntax-super-in-eval.js.ftl-eager-no-cjit: Segmentation fault stress/class-syntax-super-in-eval.js.ftl-eager-no-cjit: ERROR: Unexpected exit code: 139 microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: Timed out after 207.000000 sec seconds! microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: Segmentation fault microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: ERROR: Unexpected exit code: 139 microbenchmarks/varargs-call.js.ftl-no-cjit-validate-sampling-profiler: Segmentation fault microbenchmarks/varargs-call.js.ftl-no-cjit-validate-sampling-profiler: ERROR: Unexpected exit code: 139 If there is any volunteer to check and fix these crashes, we could enable it in the near future. Unfortunately I don't and won't have time to do it myself.
Yusuke Suzuki
Comment 7
2017-03-06 21:52:17 PST
(In reply to
comment #6
)
> Update: There are a few crashes/failures with enabled FTL JIT on AArch64 > Linux: (tested on
r213461
)
Maybe some of them can be fixed since they are not AArch64 specific thing I think. But others are a bit difficult...
> > stress/array-concat-spread-object.js.ftl-no-cjit-validate-sampling-profiler: > Exception: failed normally with an object > stress/array-concat-spread-object.js.ftl-no-cjit-validate-sampling-profiler: > ERROR: Unexpected exit code: 3
This should be related to
https://bugs.webkit.org/show_bug.cgi?id=153704
. So it should be debugged even in x86_64 environment. I'll check this this weekend.
> stress/class-syntax-super-in-eval.js.ftl-eager-no-cjit: Segmentation fault > stress/class-syntax-super-in-eval.js.ftl-eager-no-cjit: ERROR: Unexpected > exit code: 139
I think it's difficult to debug without AArch64 machine. Can anyone investigate this issue?
> microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: Timed out > after 207.000000 sec seconds! > microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: > Segmentation fault > microbenchmarks/generator-with-several-types.js.ftl-eager-no-cjit: ERROR: > Unexpected exit code: 139
I guess this is pure timeout. Can anyone investigate it? If so, just moving it to slowMicrobenchmarks directory solves the problem.
> microbenchmarks/varargs-call.js.ftl-no-cjit-validate-sampling-profiler: > Segmentation fault > microbenchmarks/varargs-call.js.ftl-no-cjit-validate-sampling-profiler: > ERROR: Unexpected exit code: 139
And I think this is also related to
https://bugs.webkit.org/show_bug.cgi?id=153704
. I believe varargs forwarding in FTL have some bugs related to SP update & signal stack.
> > > If there is any volunteer to check and fix these crashes, we could enable > it in the near future. Unfortunately I don't and won't have time to do > it myself.
Yusuke Suzuki
Comment 8
2017-03-09 00:32:23 PST
Hi Ossy! Today I've landed the patch to fix call-varargs failures when enabling sampling profilers.
https://trac.webkit.org/changeset/213631
I think this fix reduces the listed failures. Could you run the tests with AArch64 FTL and update the remaining failures?
Csaba Osztrogonác
Comment 9
2017-03-09 00:37:07 PST
(In reply to
comment #8
)
> Hi Ossy! > > Today I've landed the patch to fix call-varargs failures when enabling > sampling profilers. >
https://trac.webkit.org/changeset/213631
> > I think this fix reduces the listed failures. > Could you run the tests with AArch64 FTL and update the remaining failures?
Sure, I can run tests later today and try to check if increasing the timeout helps or not.
Csaba Osztrogonác
Comment 10
2017-03-11 00:49:26 PST
Unfortunately JSC is completely broken on AArch64 Linux because of
bug169510
, there is no reason to talk about testing/enabling FTL until
bug169510
is fixed.
Yusuke Suzuki
Comment 11
2017-03-11 23:56:53 PST
(In reply to
comment #10
)
> Unfortunately JSC is completely broken on AArch64 Linux because of
bug169510
, > there is no reason to talk about testing/enabling FTL until
bug169510
is > fixed.
Maybe, that ifdef thing reverted the above change. So, how is the current FTL AArch64 situation?
Zan Dobersek
Comment 12
2017-05-09 08:39:02 PDT
(In reply to Yusuke Suzuki from
comment #11
)
> (In reply to
comment #10
) > > Unfortunately JSC is completely broken on AArch64 Linux because of
bug169510
, > > there is no reason to talk about testing/enabling FTL until
bug169510
is > > fixed. > > Maybe, that ifdef thing reverted the above change. > So, how is the current FTL AArch64 situation?
I fixed various problems over the past few weeks: -
bug #169510
-
bug #170672
-
bug #170891
-
bug #171563
On the hardware I use, this leaves no consistent failures, but there are some flakes. Currently, with FTL still disabled, ChakraCore.yaml/ChakraCore/test/GlobalFunctions/ParseInt1.js.default seems to fail due to a compiler bug. There's also failures in datetime and number formatting tests, that's fixable by using ICU 57.1. I'd propose enabling FTL and WebAssembly for Linux ports at least for a shorter period of time to see how the test suite responds.
Yusuke Suzuki
Comment 13
2017-05-09 08:43:43 PDT
(In reply to Zan Dobersek from
comment #12
)
> > I fixed various problems over the past few weeks: > -
bug #169510
> -
bug #170672
> -
bug #170891
> -
bug #171563
> > On the hardware I use, this leaves no consistent failures, but there are > some flakes. > > Currently, with FTL still disabled, > ChakraCore.yaml/ChakraCore/test/GlobalFunctions/ParseInt1.js.default seems > to fail due to a compiler bug. There's also failures in datetime and number > formatting tests, that's fixable by using ICU 57.1. > > I'd propose enabling FTL and WebAssembly for Linux ports at least for a > shorter period of time to see how the test suite responds.
I strongly support for this proposal!
Zan Dobersek
Comment 14
2017-05-09 08:44:27 PDT
Created
attachment 309499
[details]
Patch
Yusuke Suzuki
Comment 15
2017-05-09 08:50:32 PDT
Comment on
attachment 309499
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=309499&action=review
I would like to ask GTK folks about enabling FTL on ARM64 too.
> Source/cmake/WebKitFeatures.cmake:69 > + if (WTF_CPU_X86_64 OR WTF_CPU_ARM64)
Is it necessary to modify cmake/OptionsWPE.cmake?
Saam Barati
Comment 16
2017-05-09 09:54:03 PDT
(In reply to Zan Dobersek from
comment #12
)
> (In reply to Yusuke Suzuki from
comment #11
) > > (In reply to
comment #10
) > > > Unfortunately JSC is completely broken on AArch64 Linux because of
bug169510
, > > > there is no reason to talk about testing/enabling FTL until
bug169510
is > > > fixed. > > > > Maybe, that ifdef thing reverted the above change. > > So, how is the current FTL AArch64 situation? > > I fixed various problems over the past few weeks: > -
bug #169510
> -
bug #170672
> -
bug #170891
> -
bug #171563
> > On the hardware I use, this leaves no consistent failures, but there are > some flakes. > > Currently, with FTL still disabled, > ChakraCore.yaml/ChakraCore/test/GlobalFunctions/ParseInt1.js.default seems > to fail due to a compiler bug.
This could be related to some of my work on parseInt. Can you reproduce this easily locally? If so, can you see if it passes with DFG disabled. There's also failures in datetime and number
> formatting tests, that's fixable by using ICU 57.1. > > I'd propose enabling FTL and WebAssembly for Linux ports at least for a > shorter period of time to see how the test suite responds.
Michael Catanzaro
Comment 17
2017-05-09 11:27:25 PDT
Comment on
attachment 309499
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=309499&action=review
>> Source/cmake/WebKitFeatures.cmake:69 >> + if (WTF_CPU_X86_64 OR WTF_CPU_ARM64) > > Is it necessary to modify cmake/OptionsWPE.cmake?
Good call. Yes and no. ENABLE_FTL_DEFAULT should not be set at all in OptionsWPE.cmake, because it's just being immediately overridden here, since the next thing OptionsWPE.cmake does is call WEBKIT_OPTION_BEGIN. So this should definitely be fixed before landing. ENABLE_FTL_JIT should also no longer be set in OptionsWPE.cmake.
Zan Dobersek
Comment 18
2017-05-09 23:44:14 PDT
Comment on
attachment 309499
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=309499&action=review
>>> Source/cmake/WebKitFeatures.cmake:69 >>> + if (WTF_CPU_X86_64 OR WTF_CPU_ARM64) >> >> Is it necessary to modify cmake/OptionsWPE.cmake? > > Good call. Yes and no. ENABLE_FTL_DEFAULT should not be set at all in OptionsWPE.cmake, because it's just being immediately overridden here, since the next thing OptionsWPE.cmake does is call WEBKIT_OPTION_BEGIN. So this should definitely be fixed before landing. > > ENABLE_FTL_JIT should also no longer be set in OptionsWPE.cmake.
ENABLE_FTL_DEFAULT should be removed from OptionsWPE, along with the ENABLE_FTL_JIT override. But we also need to enable FTL_JIT and WEBASSEMBLY in build-jsc and FeatureList.pm. So I'll add that.
Zan Dobersek
Comment 19
2017-05-10 00:03:44 PDT
Created
attachment 309582
[details]
Patch Updates OptionsWPE.cmake and enables FTL JIT and WebAssembly on ARM64 in build-jsc and FeatureList.pm.
Yusuke Suzuki
Comment 20
2017-05-10 00:16:32 PDT
Comment on
attachment 309582
[details]
Patch r=me
Zan Dobersek
Comment 21
2017-05-10 01:02:16 PDT
(In reply to Saam Barati from
comment #16
)
> (In reply to Zan Dobersek from
comment #12
) > > (In reply to Yusuke Suzuki from
comment #11
) > > > (In reply to
comment #10
) > > > > Unfortunately JSC is completely broken on AArch64 Linux because of
bug169510
, > > > > there is no reason to talk about testing/enabling FTL until
bug169510
is > > > > fixed. > > > > > > Maybe, that ifdef thing reverted the above change. > > > So, how is the current FTL AArch64 situation? > > > > I fixed various problems over the past few weeks: > > -
bug #169510
> > -
bug #170672
> > -
bug #170891
> > -
bug #171563
> > > > On the hardware I use, this leaves no consistent failures, but there are > > some flakes. > > > > Currently, with FTL still disabled, > > ChakraCore.yaml/ChakraCore/test/GlobalFunctions/ParseInt1.js.default seems > > to fail due to a compiler bug. > This could be related to some of my work on parseInt. Can you reproduce this > easily locally? If so, can you see if it passes with DFG disabled. >
It still fails if DFG is disabled. I think it's a bug in GCC (tested with GCC 6.3), or even a completely valid optimization based on UB. The test passes if the parseInt template function has the O1 optimization level enforced through the `optimize` attribute, and fails as soon as that level is increased to O2. Specifically, the difference in generated code that's causing the test failure can be narrowed to this pair of statements: number *= radix; number += digit; Dunno, we should put together a test case and ask on the GCC bugzilla about the expected behavior here.
Zan Dobersek
Comment 22
2017-05-10 01:02:51 PDT
(In reply to Yusuke Suzuki from
comment #20
)
> Comment on
attachment 309582
[details]
> Patch > > r=me
Thanks, I'll land the patch and see what the testers say.
Zan Dobersek
Comment 23
2017-05-10 01:04:47 PDT
Comment on
attachment 309582
[details]
Patch Clearing flags on attachment: 309582 Committed
r216575
: <
http://trac.webkit.org/changeset/216575
>
Csaba Osztrogonác
Comment 24
2017-05-10 05:34:09 PDT
The first test finished on the AArch64 bot after FTL is enabled. There are only 4 extra failures introduced: - stress/check-string-ident.js.ftl-no-cjit-b3o1 - stress/spread-calling.js.ftl-eager-no-cjit - wasm.yaml/wasm/js-api/test_memory_constructor.js.default-wasm - wasm.yaml/wasm/js-api/test_memory_constructor.js.wasm-eager-jettison stress/check-string-ident.js.ftl-no-cjit-b3o1: Exception: Error: We should not have to compile this function more than once. stress/check-string-ident.js.ftl-no-cjit-b3o1: global
code@check-string-ident.js
:15:20 stress/check-string-ident.js.ftl-no-cjit-b3o1: ERROR: Unexpected exit code: 3 stress/spread-calling.js.ftl-eager-no-cjit: Timed out after 207.000000 sec seconds! stress/spread-calling.js.ftl-eager-no-cjit: Segmentation fault stress/spread-calling.js.ftl-eager-no-cjit: ERROR: Unexpected exit code: 139 wasm.yaml/wasm/js-api/test_memory_constructor.js.default-wasm: Killed wasm.yaml/wasm/js-api/test_memory_constructor.js.default-wasm: ERROR: Unexpected exit code: 137 FAIL: wasm.yaml/wasm/js-api/test_memory_constructor.js.default-wasm wasm.yaml/wasm/js-api/test_memory_constructor.js.wasm-eager-jettison: Killed wasm.yaml/wasm/js-api/test_memory_constructor.js.wasm-eager-jettison: ERROR: Unexpected exit code: 137 FAIL: wasm.yaml/wasm/js-api/test_memory_constructor.js.wasm-eager-jettison I have no time to investigate them, feel free to pick it up if you are intereted in it.
Zan Dobersek
Comment 25
2017-10-18 01:37:42 PDT
This is completed. Only one failure listed in
comment #24
remains relevant, and that test is supposed to be skipped (which is not enforced properly).
Radar WebKit Bug Importer
Comment 26
2017-10-18 01:38:41 PDT
<
rdar://problem/35048129
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug