Bug 151745 - [ARM] REGRESSION: Fix FTL JIT related failures on AArch64 Linux
Summary: [ARM] REGRESSION: Fix FTL JIT related failures on AArch64 Linux
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks: 108645
  Show dependency treegraph
 
Reported: 2015-12-02 08:55 PST by Csaba Osztrogonác
Modified: 2017-10-18 02:50 PDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Csaba Osztrogonác 2015-12-02 08:55:28 PST
FTL JIT wasn't tested on AArch64 Linux long time ago.
I ran stress tests on r192942 and got many failures:

** The following JSC stress test failures have been introduced:
        cdjs-tests.yaml/main.js.ftl-eager-no-cjit
        cdjs-tests.yaml/main.js.ftl-no-cjit
        executableAllocationFuzz.yaml/executableAllocationFuzz/v8-raytrace.js.executable-allocation-fuzz-default
        jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js.layout-ftl
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-both-proven-final-object.js.layout-ftl-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object.js.layout-ftl
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-compare-final-object-to-final-object-or-other-when-proven-final-object.js.layout-ftl-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-convert-this-polymorphic-object-then-exit-on-other.js.layout-dfg-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-exception.js.layout-ftl
        jsc-layout-tests.yaml/js/script-tests/dfg-exception.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-exception.js.layout-ftl-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places-broken.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/exception-propagate-from-dfg-to-llint.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/for-in-modify-in-loop.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/regress-139548.js.layout-ftl
        jsc-layout-tests.yaml/js/script-tests/regress-139548.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/regress-139548.js.layout-ftl-no-cjit
        jsc-layout-tests.yaml/js/script-tests/stack-trace.js.layout-ftl-eager-no-cjit
        modules.yaml/modules/execution-order-dag.js.dfg-eager-no-cjit-validate-modules
        modules.yaml/modules/execution-order-depth.js.no-llint-modules
        mozilla-tests.yaml/ecma/Date/15.9.5.23-11.js.mozilla-baseline
        mozilla-tests.yaml/ecma/String/15.5.4.6-1.js.mozilla-baseline
        mozilla-tests.yaml/ecma/Types/8.4.js.mozilla-baseline
        mozilla-tests.yaml/ecma_2/String/split-001.js.mozilla-baseline
        mozilla-tests.yaml/js1_3/inherit/proto_2.js.mozilla-baseline
        regress/script-tests/Float32Array-matrix-mult.js.dfg-maximal-flush-validate-no-cjit
        regress/script-tests/Int16Array-bubble-sort-with-byteLength.js.ftl-no-cjit-no-put-stack-validate
        regress/script-tests/deltablue-varargs.js.ftl-eager
        regress/script-tests/fold-get-by-id-to-multi-get-by-offset-rare-int.js.ftl-eager
        regress/script-tests/getter-richards-try-catch.js.default-ftl
        regress/script-tests/getter-richards-try-catch.js.ftl-no-cjit-validate
        regress/script-tests/hoist-poly-check-structure.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/inlined-put-by-id-transition.js.no-llint
        regress/script-tests/polymorphic-put-by-id.js.default
        regress/script-tests/polymorphic-put-by-id.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/polymorphic-put-by-id.js.ftl-no-cjit-small-pool
        regress/script-tests/polymorphic-put-by-id.js.ftl-no-cjit-validate
        regress/script-tests/sorting-benchmark.js.dfg-maximal-flush-validate-no-cjit
        regress/script-tests/v8-raytrace-with-empty-try-catch.js.ftl-eager-no-cjit
        regress/script-tests/v8-raytrace-with-empty-try-catch.js.ftl-no-cjit-no-put-stack-validate
        regress/script-tests/v8-raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit
        stress/array-copywithin.js.ftl-eager-no-cjit
        stress/capture-escape-and-throw.js.ftl-eager-no-cjit
        stress/capture-escape-and-throw.js.ftl-no-cjit-no-inline-validate
        stress/capture-escape-and-throw.js.ftl-no-cjit-no-put-stack-validate
        stress/capture-escape-and-throw.js.ftl-no-cjit-validate
        stress/const-loop-semantics.js.dfg-eager
        stress/exception-effect-strcat.js.ftl-eager
        stress/exception-effect-strcat.js.ftl-eager-no-cjit
        stress/exception-effect-strcat.js.ftl-no-cjit-no-inline-validate
        stress/exception-effect-strcat.js.ftl-no-cjit-no-put-stack-validate
        stress/exception-effect-strcat.js.ftl-no-cjit-validate
        stress/exception-in-strcat-string-overflow.js.ftl-eager-no-cjit
        stress/exception-in-strcat-string-overflow.js.ftl-no-cjit-no-inline-validate
        stress/exception-in-strcat-string-overflow.js.ftl-no-cjit-no-put-stack-validate
        stress/exception-in-strcat-string-overflow.js.ftl-no-cjit-validate
        stress/exception-in-strcat.js.ftl-eager
        stress/exception-in-strcat.js.ftl-eager-no-cjit
        stress/exception-in-strcat.js.ftl-no-cjit-no-inline-validate
        stress/exception-in-strcat.js.ftl-no-cjit-no-put-stack-validate
        stress/exception-in-strcat.js.ftl-no-cjit-validate
        stress/exception-in-to-property-key-should-be-handled-early.js.ftl-eager-no-cjit
        stress/exception-in-to-property-key-should-be-handled-early.js.ftl-no-cjit-no-inline-validate
        stress/exception-in-to-property-key-should-be-handled-early.js.ftl-no-cjit-no-put-stack-validate
        stress/exception-in-to-property-key-should-be-handled-early.js.ftl-no-cjit-validate
        stress/exit-after-int52-to-value.js.ftl-no-cjit-small-pool
        stress/for-in-delete-during-iteration.js.ftl-no-cjit-validate
        stress/ftl-library-exception.js.default-ftl
        stress/ftl-library-exception.js.ftl-eager
        stress/ftl-library-exception.js.ftl-eager-no-cjit
        stress/ftl-library-exception.js.ftl-no-cjit-no-inline-validate
        stress/ftl-library-exception.js.ftl-no-cjit-no-put-stack-validate
        stress/ftl-library-exception.js.ftl-no-cjit-small-pool
        stress/ftl-library-exception.js.ftl-no-cjit-validate
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-eager
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-eager-no-cjit
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-no-cjit-no-inline-validate
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-no-cjit-no-put-stack-validate
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-no-cjit-small-pool
        stress/ftl-library-inlining-exceptions-dataview.js.ftl-no-cjit-validate
        stress/ftl-library-inlining-exceptions.js.default-ftl
        stress/ftl-library-inlining-exceptions.js.ftl-eager
        stress/ftl-library-inlining-exceptions.js.ftl-eager-no-cjit
        stress/ftl-library-inlining-exceptions.js.ftl-no-cjit-no-inline-validate
        stress/ftl-library-inlining-exceptions.js.ftl-no-cjit-no-put-stack-validate
        stress/ftl-library-inlining-exceptions.js.ftl-no-cjit-small-pool
        stress/ftl-library-inlining-exceptions.js.ftl-no-cjit-validate
        stress/ftl-try-catch-tail-call-inilned-caller.js.ftl-no-cjit-no-inline-validate
        stress/get-by-id-throw-from-getter-through-optimized-code.js.default-ftl
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-eager
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-eager-no-cjit
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-no-cjit-no-inline-validate
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-no-cjit-no-put-stack-validate
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-no-cjit-small-pool
        stress/get-by-id-throw-from-getter-through-optimized-code.js.ftl-no-cjit-validate
        stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.ftl-eager-no-cjit
        stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.ftl-eager-no-cjit
        stress/ic-throw-through-optimized-code.js.default-ftl
        stress/ic-throw-through-optimized-code.js.ftl-eager
        stress/ic-throw-through-optimized-code.js.ftl-eager-no-cjit
        stress/ic-throw-through-optimized-code.js.ftl-no-cjit-no-inline-validate
        stress/ic-throw-through-optimized-code.js.ftl-no-cjit-no-put-stack-validate
        stress/ic-throw-through-optimized-code.js.ftl-no-cjit-small-pool
        stress/ic-throw-through-optimized-code.js.ftl-no-cjit-validate
        stress/infinite-loop-that-uses-captured-variables-before-throwing.js.ftl-eager
        stress/infinite-loop-that-uses-captured-variables-before-throwing.js.ftl-eager-no-cjit
        stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.ftl-eager
        stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.ftl-eager-no-cjit
        stress/infinite-loop-that-uses-captured-variables-with-osr-entry.js.ftl-eager-no-cjit
        stress/math-pow-nan-behaviors.js.ftl-no-cjit-validate
        stress/new-array-with-size-throw-exception-and-tear-off-arguments.js.ftl-eager-no-cjit
        stress/new-array-with-size-throw-exception-and-tear-off-arguments.js.ftl-no-cjit-no-inline-validate
        stress/new-array-with-size-throw-exception-and-tear-off-arguments.js.ftl-no-cjit-no-put-stack-validate
        stress/new-array-with-size-throw-exception-and-tear-off-arguments.js.ftl-no-cjit-validate
        stress/put-by-id-on-new-object-after-prototype-transition-strict.js.always-trigger-copy-phase
        stress/put-by-id-throw-through-optimized-code.js.ftl-eager-no-cjit
        stress/reflect-has.js.ftl-eager-no-cjit
        stress/runtime-throw-through-optimized-code.js.ftl-eager
        stress/runtime-throw-through-optimized-code.js.ftl-eager-no-cjit
        stress/runtime-throw-through-optimized-code.js.ftl-no-cjit-no-inline-validate
        stress/runtime-throw-through-optimized-code.js.ftl-no-cjit-no-put-stack-validate
        stress/runtime-throw-through-optimized-code.js.ftl-no-cjit-small-pool
        stress/runtime-throw-through-optimized-code.js.ftl-no-cjit-validate
        stress/sink-multigetbyoffset.js.ftl-eager
        stress/sink-multigetbyoffset.js.ftl-no-cjit-small-pool
        stress/throw-from-ftl-call-ic-slow-path-cells.js.default-ftl
        stress/throw-from-ftl-call-ic-slow-path-cells.js.ftl-eager
        stress/throw-from-ftl-call-ic-slow-path-cells.js.ftl-eager-no-cjit
        stress/throw-from-ftl-call-ic-slow-path-cells.js.ftl-no-cjit-no-inline-validate
        stress/throw-from-ftl-call-ic-slow-path-cells.js.ftl-no-cjit-no-put-stack-validate
        stress/throw-from-ftl-call-ic-slow-path-cells.js.ftl-no-cjit-validate
        stress/throw-from-ftl-call-ic-slow-path-undefined.js.ftl-eager
        stress/throw-from-ftl-call-ic-slow-path-undefined.js.ftl-eager-no-cjit
        stress/throw-from-ftl-call-ic-slow-path-undefined.js.ftl-no-cjit-no-inline-validate
        stress/throw-from-ftl-call-ic-slow-path-undefined.js.ftl-no-cjit-no-put-stack-validate
        stress/throw-from-ftl-call-ic-slow-path-undefined.js.ftl-no-cjit-validate
        stress/throw-from-ftl-call-ic-slow-path.js.ftl-eager
        stress/throw-from-ftl-call-ic-slow-path.js.ftl-eager-no-cjit
        stress/throw-from-ftl-call-ic-slow-path.js.ftl-no-cjit-no-inline-validate
        stress/throw-from-ftl-call-ic-slow-path.js.ftl-no-cjit-no-put-stack-validate
        stress/throw-from-ftl-call-ic-slow-path.js.ftl-no-cjit-validate
        stress/throw-through-optimized-code.js.ftl-eager
        stress/throw-through-optimized-code.js.ftl-eager-no-cjit
        stress/throw-through-optimized-code.js.ftl-no-cjit-no-inline-validate
        stress/throw-through-optimized-code.js.ftl-no-cjit-no-put-stack-validate
        stress/throw-through-optimized-code.js.ftl-no-cjit-small-pool
        stress/throw-through-optimized-code.js.ftl-no-cjit-validate
        stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager
        stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager-no-cjit
        stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager
        stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager-no-cjit
        stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager
        stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.ftl-eager-no-cjit
        stress/tricky-infinite-loop-that-uses-captured-variables.js.ftl-eager
        stress/tricky-infinite-loop-that-uses-captured-variables.js.ftl-eager-no-cjit
        stress/typedarray-every.js.ftl-eager-no-cjit
        stress/typedarray-filter.js.ftl-eager-no-cjit
        stress/typedarray-find.js.ftl-eager-no-cjit
        stress/typedarray-map.js.ftl-eager-no-cjit
        stress/typedarray-reduce.js.ftl-eager
        stress/typedarray-reduce.js.ftl-eager-no-cjit
        stress/typedarray-reduceRight.js.ftl-eager-no-cjit
        stress/typedarray-some.js.ftl-eager-no-cjit
        stress/typedarray-sort.js.ftl-eager-no-cjit
        stress/v8-deltablue-strict.js.ftl-eager-no-cjit
        stress/v8-deltablue-strict.js.ftl-no-cjit-validate
        stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit
        stress/v8-earley-boyer-strict.js.no-llint
        stress/v8-raytrace-strict.js.ftl-eager-no-cjit
        stress/v8-regexp-strict.js.default
        stress/v8-regexp-strict.js.ftl-no-cjit-validate
        stress/v8-splay-strict.js.default
        stress/v8-splay-strict.js.ftl-no-cjit-validate
        v8-v6/v8-deltablue.js.default
        v8-v6/v8-earley-boyer.js.ftl-eager-no-cjit
        v8-v6/v8-raytrace.js.dfg-eager
        v8-v6/v8-raytrace.js.dfg-maximal-flush-validate-no-cjit
        v8-v6/v8-raytrace.js.ftl-eager-no-cjit
        v8-v6/v8-raytrace.js.ftl-no-cjit-no-put-stack-validate
        v8-v6/v8-raytrace.js.ftl-no-cjit-validate
        v8-v6/v8-splay.js.dfg-eager
        v8-v6/v8-splay.js.ftl-eager-no-cjit

Results for JSC stress tests:
    186 failures found.
Comment 1 Csaba Osztrogonác 2015-12-02 08:55:56 PST
failures without FTL JIT on the same revision:

** The following JSC stress test failures have been introduced:
	executableAllocationFuzz.yaml/executableAllocationFuzz/v8-raytrace.js.executable-allocation-fuzz-default
	executableAllocationFuzz.yaml/executableAllocationFuzz/v8-raytrace.js.executable-allocation-fuzz-no-cjit
	jsc-layout-tests.yaml/js/script-tests/dfg-cfa-prove-put-by-id-simple-when-storing-to-specialized-function.js.layout-no-llint
	jsc-layout-tests.yaml/js/script-tests/dfg-convert-this-polymorphic-object-then-exit-on-other.js.layout-dfg-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/sort-large-array.js.layout-dfg-eager-no-cjit
	mozilla-tests.yaml/ecma/Date/15.9.5.10-3.js.mozilla-baseline
	mozilla-tests.yaml/ecma/Date/15.9.5.13-4.js.mozilla-baseline
	mozilla-tests.yaml/ecma/Date/15.9.5.23-11.js.mozilla-baseline
	mozilla-tests.yaml/ecma/Date/15.9.5.36-5.js.mozilla-baseline
	mozilla-tests.yaml/ecma/Expressions/11.7.1.js.mozilla-dfg-eager-no-cjit-validate-phases
	mozilla-tests.yaml/js1_2/regexp/RegExp_rightContext_as_array.js.mozilla-baseline
	regress/script-tests/deltablue-varargs.js.no-llint
	regress/script-tests/polymorphic-put-by-id.js.dfg-eager
	regress/script-tests/raytrace-with-empty-try-catch.js.dfg-eager-no-cjit-validate
	regress/script-tests/sorting-benchmark.js.default
	regress/script-tests/v8-raytrace-with-try-catch.js.dfg-eager
	regress/script-tests/v8-raytrace-with-try-catch.js.dfg-eager-no-cjit-validate
	stress/array-message-passing.js.dfg-eager-no-cjit-validate
	stress/load-varargs-then-inlined-call-exit-in-foo.js.no-llint
	stress/redundant-array-bounds-checks-addition-skip-first.js.default
	stress/v8-crypto-strict.js.dfg-eager-no-cjit-validate
	stress/v8-regexp-strict.js.dfg-eager-no-cjit-validate
	stress/v8-regexp-strict.js.dfg-maximal-flush-validate-no-cjit
	sunspider-1.0/3d-raytrace.js.no-llint
	v8-v6/v8-crypto.js.dfg-eager-no-cjit-validate
	v8-v6/v8-raytrace.js.default
	v8-v6/v8-raytrace.js.dfg-eager-no-cjit-validate
	v8-v6/v8-splay.js.default

Results for JSC stress tests:
    28 failures found.
Comment 2 Zan Dobersek 2017-10-18 02:50:48 PDT
This isn't representative of the FTL JIT support on Linux ARM64 almost two years later.