Bug 148494

Summary: jsc-tailcall: Test failures with FTL enabled after r188986
Product: WebKit Reporter: Michael Saboff <msaboff>
Component: JavaScriptCoreAssignee: Michael Saboff <msaboff>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: basile_clement
Priority: P2    
Version: Other   
Hardware: All   
OS: All   
Attachments:
Description Flags
Debug test failures
none
Release test failures
none
Patch none

Description Michael Saboff 2015-08-26 15:45:20 PDT
Created attachment 259985 [details]
Debug test failures

After r188986 with the FTL enabled by changing useFTLJIT option in JavaScriptCore/runtime/Options.h to true, we get failures.

The following 134 JSC stress tests fail in a Debug build:
	cdjs-tests.yaml/main.js.ftl-eager-no-cjit
	cdjs-tests.yaml/motion_test.js.ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/Object-getOwnPropertyNames.js.layout-ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-dfg-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-ftl
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-ftl-no-cjit
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-no-cjit
	jsc-layout-tests.yaml/js/script-tests/caller-property.js.layout-no-llint
	jsc-layout-tests.yaml/js/script-tests/dfg-get-closure-var-put-closure-var-interference.js.layout-ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/sort-randomly.js.layout-ftl-eager-no-cjit
	mozilla-tests.yaml/ecma/Date/15.9.4.3.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.10-11.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.10-12.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.10-13.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.11-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.26-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.27-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.28-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.29-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.30-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.31-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.36-4.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.36-5.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.36-6.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.36-7.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.37-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.37-2.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.37-4.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.37-5.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Expressions/11.7.1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Expressions/11.7.2.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.11-2.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.12-1.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.12-2.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.12-3.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.12-4.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/String/15.5.4.12-5.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/js1_5/Regress/regress-159334.js.mozilla-ftl-eager-no-cjit-validate-phases
	regress/script-tests/array-prototype-every.js.ftl-no-cjit-no-inline-validate
	regress/script-tests/array-prototype-forEach.js.ftl-no-cjit-no-inline-validate
	regress/script-tests/array-prototype-reduceRight.js.ftl-no-cjit-no-inline-validate
	regress/script-tests/array-prototype-some.js.ftl-no-cjit-no-inline-validate
	regress/script-tests/deltablue-varargs.js.ftl-eager
	regress/script-tests/deltablue-varargs.js.ftl-eager-no-cjit
	regress/script-tests/getter-richards.js.ftl-no-cjit-validate
	regress/script-tests/sorting-benchmark.js.ftl-eager-no-cjit
	stress/activation-sink-default-value.js.ftl-eager-no-cjit
	stress/activation-sink.js.ftl-eager-no-cjit
	stress/dfg-tail-calls.js.always-trigger-copy-phase
	stress/dfg-tail-calls.js.default
	stress/dfg-tail-calls.js.default-ftl
	stress/dfg-tail-calls.js.dfg-eager
	stress/dfg-tail-calls.js.dfg-eager-no-cjit-validate
	stress/dfg-tail-calls.js.ftl-eager
	stress/dfg-tail-calls.js.ftl-eager-no-cjit
	stress/dfg-tail-calls.js.ftl-no-cjit-no-inline-validate
	stress/dfg-tail-calls.js.ftl-no-cjit-validate
	stress/dfg-tail-calls.js.no-cjit-validate-phases
	stress/dfg-tail-calls.js.no-llint
	stress/function-reentry-infer-on-self.js.ftl-eager-no-cjit
	stress/inline-call-varargs-and-call.js.ftl-no-cjit-no-inline-validate
	stress/inlined-function-this-liveness.js.ftl-no-cjit-no-inline-validate
	stress/mutual-tail-call-no-stack-overflow.js.always-trigger-copy-phase
	stress/mutual-tail-call-no-stack-overflow.js.default
	stress/mutual-tail-call-no-stack-overflow.js.default-ftl
	stress/mutual-tail-call-no-stack-overflow.js.dfg-eager
	stress/mutual-tail-call-no-stack-overflow.js.dfg-eager-no-cjit-validate
	stress/mutual-tail-call-no-stack-overflow.js.ftl-eager
	stress/mutual-tail-call-no-stack-overflow.js.ftl-eager-no-cjit
	stress/mutual-tail-call-no-stack-overflow.js.ftl-no-cjit-no-inline-validate
	stress/mutual-tail-call-no-stack-overflow.js.ftl-no-cjit-validate
	stress/mutual-tail-call-no-stack-overflow.js.no-cjit-validate-phases
	stress/mutual-tail-call-no-stack-overflow.js.no-llint
	stress/sink-arguments-past-invalid-check-sneakier.js.ftl-no-cjit-no-inline-validate
	stress/sink-object-past-invalid-check-sneakier.js.ftl-no-cjit-no-inline-validate
	stress/string-ident-to-not-string-var-equality.js.ftl-no-cjit-no-inline-validate
	stress/tail-call-no-stack-overflow.js.always-trigger-copy-phase
	stress/tail-call-no-stack-overflow.js.default
	stress/tail-call-no-stack-overflow.js.default-ftl
	stress/tail-call-no-stack-overflow.js.dfg-eager
	stress/tail-call-no-stack-overflow.js.dfg-eager-no-cjit-validate
	stress/tail-call-no-stack-overflow.js.ftl-eager
	stress/tail-call-no-stack-overflow.js.ftl-eager-no-cjit
	stress/tail-call-no-stack-overflow.js.ftl-no-cjit-no-inline-validate
	stress/tail-call-no-stack-overflow.js.ftl-no-cjit-validate
	stress/tail-call-no-stack-overflow.js.no-cjit-validate-phases
	stress/tail-call-no-stack-overflow.js.no-llint
	stress/tail-call-recognize.js.-no-inline
	stress/tail-call-varargs-no-stack-overflow.js.always-trigger-copy-phase
	stress/tail-call-varargs-no-stack-overflow.js.default
	stress/tail-call-varargs-no-stack-overflow.js.default-ftl
	stress/tail-call-varargs-no-stack-overflow.js.dfg-eager
	stress/tail-call-varargs-no-stack-overflow.js.dfg-eager-no-cjit-validate
	stress/tail-call-varargs-no-stack-overflow.js.ftl-eager
	stress/tail-call-varargs-no-stack-overflow.js.ftl-eager-no-cjit
	stress/tail-call-varargs-no-stack-overflow.js.ftl-no-cjit-no-inline-validate
	stress/tail-call-varargs-no-stack-overflow.js.ftl-no-cjit-validate
	stress/tail-call-varargs-no-stack-overflow.js.no-cjit-validate-phases
	stress/tail-call-varargs-no-stack-overflow.js.no-llint
	stress/type-of-functions-and-objects.js.ftl-eager
	stress/v8-crypto-strict.js.ftl-eager-no-cjit
	stress/v8-deltablue-strict.js.ftl-eager
	stress/v8-deltablue-strict.js.ftl-eager-no-cjit
	stress/v8-earley-boyer-strict.js.default-ftl
	stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit
	stress/v8-raytrace-strict.js.ftl-eager-no-cjit
	stress/v8-richards-strict.js.ftl-eager-no-cjit
	stress/v8-richards-strict.js.ftl-no-cjit-no-inline-validate
	stress/v8-richards-strict.js.ftl-no-cjit-validate
	stress/v8-splay-strict.js.ftl-eager-no-cjit
	stress/varargs-closure-inlined-exit-strict-mode.js.ftl-eager
	stress/varargs-closure-inlined-exit-strict-mode.js.ftl-no-cjit-no-inline-validate
	stress/varargs-closure-inlined-exit.js.ftl-no-cjit-no-inline-validate
	stress/varargs-varargs-inlined-exit-strict-mode.js.ftl-no-cjit-no-inline-validate
	stress/varargs-varargs-inlined-exit.js.ftl-no-cjit-no-inline-validate
	sunspider-1.0/3d-cube.js.ftl-eager-no-cjit
	sunspider-1.0/3d-raytrace.js.ftl-eager-no-cjit
	sunspider-1.0/crypto-md5.js.ftl-no-cjit-no-inline-validate
	v8-v6/v8-crypto.js.ftl-eager
	v8-v6/v8-crypto.js.ftl-eager-no-cjit
	v8-v6/v8-deltablue.js.ftl-eager
	v8-v6/v8-deltablue.js.ftl-eager-no-cjit
	v8-v6/v8-earley-boyer.js.default-ftl
	v8-v6/v8-earley-boyer.js.ftl-eager
	v8-v6/v8-earley-boyer.js.ftl-eager-no-cjit
	v8-v6/v8-raytrace.js.ftl-eager-no-cjit
	v8-v6/v8-richards.js.ftl-eager-no-cjit
	v8-v6/v8-richards.js.ftl-no-cjit-no-inline-validate
	v8-v6/v8-richards.js.ftl-no-cjit-validate
	v8-v6/v8-splay.js.ftl-eager-no-cjit

The following 78 JSC stress tests fail in a Release build:
        cdjs-tests.yaml/main.js.ftl-eager-no-cjit
        cdjs-tests.yaml/motion_test.js.ftl-eager-no-cjit
        cdjs-tests.yaml/red_black_tree_test.js.ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/Object-getOwnPropertyNames.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/dfg-get-closure-var-put-closure-var-interference.js.layout-ftl-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/sort-randomly.js.layout-ftl-eager-no-cjit
        mozilla-tests.yaml/ecma/Date/15.9.4.3.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.10-11.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.10-12.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.10-13.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.11-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.26-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.27-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.28-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.29-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.30-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.31-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.34-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.36-4.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.36-5.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.36-6.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.36-7.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.37-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.37-2.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.37-4.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Date/15.9.5.37-5.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Expressions/11.7.1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/Expressions/11.7.2.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.11-2.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.12-1.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.12-2.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.12-3.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.12-4.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma/String/15.5.4.12-5.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/ecma_2/Expressions/instanceof-001.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/js1_5/GetSet/getset-005.js.mozilla-ftl-eager-no-cjit-validate-phases
        mozilla-tests.yaml/js1_5/Regress/regress-159334.js.mozilla-ftl-eager-no-cjit-validate-phases
        regress/script-tests/array-prototype-every.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/array-prototype-forEach.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/array-prototype-reduceRight.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/array-prototype-some.js.ftl-no-cjit-no-inline-validate
        regress/script-tests/deltablue-varargs.js.ftl-eager-no-cjit
        regress/script-tests/getter-richards.js.ftl-no-cjit-validate
        regress/script-tests/sorting-benchmark.js.ftl-eager-no-cjit
        stress/activation-sink-default-value.js.ftl-eager-no-cjit
        stress/activation-sink.js.ftl-eager-no-cjit
        stress/destructuring-assignment-accepts-iterables.js.ftl-eager-no-cjit
        stress/function-reentry-infer-on-self.js.ftl-eager-no-cjit
        stress/inline-call-varargs-and-call.js.ftl-no-cjit-no-inline-validate
        stress/inlined-function-this-liveness.js.ftl-no-cjit-no-inline-validate
        stress/modify-map-during-iteration.js.ftl-eager-no-cjit
        stress/modify-map-during-iteration.js.ftl-no-cjit-no-inline-validate
        stress/modify-map-during-iteration.js.ftl-no-cjit-validate
        stress/set-constructor.js.ftl-eager-no-cjit
        stress/sink-arguments-past-invalid-check-sneakier.js.ftl-no-cjit-no-inline-validate
        stress/sink-object-past-invalid-check-sneakier.js.ftl-no-cjit-no-inline-validate
        stress/string-ident-to-not-string-var-equality.js.ftl-no-cjit-no-inline-validate
        stress/v8-crypto-strict.js.ftl-eager
        stress/v8-crypto-strict.js.ftl-eager-no-cjit
        stress/v8-deltablue-strict.js.ftl-eager-no-cjit
        stress/v8-earley-boyer-strict.js.ftl-eager-no-cjit
        stress/v8-raytrace-strict.js.ftl-eager-no-cjit
        stress/v8-splay-strict.js.ftl-eager-no-cjit
        stress/varargs-closure-inlined-exit.js.ftl-no-cjit-no-inline-validate
        stress/varargs-varargs-inlined-exit.js.ftl-no-cjit-no-inline-validate
        stress/weak-set-constructor.js.ftl-eager-no-cjit
        sunspider-1.0/3d-cube.js.ftl-eager-no-cjit
        sunspider-1.0/3d-raytrace.js.ftl-eager-no-cjit
        sunspider-1.0/crypto-md5.js.ftl-no-cjit-no-inline-validate
        v8-v6/v8-crypto.js.ftl-eager-no-cjit
        v8-v6/v8-deltablue.js.ftl-eager
        v8-v6/v8-deltablue.js.ftl-eager-no-cjit
        v8-v6/v8-earley-boyer.js.ftl-eager-no-cjit
        v8-v6/v8-raytrace.js.ftl-eager-no-cjit
        v8-v6/v8-richards.js.ftl-eager-no-cjit
        v8-v6/v8-richards.js.ftl-no-cjit-no-inline-validate
        v8-v6/v8-richards.js.ftl-no-cjit-validate
        v8-v6/v8-splay.js.ftl-eager-no-cjit

Full output for each test run attached.
Comment 1 Michael Saboff 2015-08-26 15:45:42 PDT
Created attachment 259986 [details]
Release test failures
Comment 2 Michael Saboff 2015-08-27 08:08:53 PDT
Created attachment 260056 [details]
Patch
Comment 3 Michael Saboff 2015-08-27 10:54:43 PDT
Committed r189036: <http://trac.webkit.org/changeset/189036>
Comment 4 Basile Clement 2015-08-31 18:11:45 PDT

*** This bug has been marked as a duplicate of bug 148666 ***
Comment 5 Csaba Osztrogonác 2015-09-14 11:01:34 PDT
Comment on attachment 260056 [details]
Patch

Cleared review? from attachment 260056 [details] so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).