Source/JavaScriptCore:
authormsaboff@apple.com <msaboff@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Sep 2015 22:28:08 +0000 (22:28 +0000)
committermsaboff@apple.com <msaboff@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Sep 2015 22:28:08 +0000 (22:28 +0000)
commit8579827174a007415ed15881be8125dd77558e52
tree26ab88e52ce45bcee46e0b79addbc30561b6dda2
parent0f93ed71e7c491b6e5796082a2bc0dd29115de03
Source/JavaScriptCore:
Relanding r190289 with the following two fixes:

 1. REGRESSION(r190289): It made Speedometer/Full.html performance test fail
    https://bugs.webkit.org/show_bug.cgi?id=149621

    Reviewed by Saam Barati.

    We need to restore callee saves for both the fast and slow paths before making a
    tail call in the FTL.

    * ftl/FTLJSCallBase.cpp:
    (JSC::FTL::JSCallBase::emit):

 2. [ARM] REGRESSION(r190289): It made 374 tests crash on 32 bit ARM Linux
    https://bugs.webkit.org/show_bug.cgi?id=149619

    Reviewed by Filip Pizlo.

    Need to check for ARMv7_TRADITIONAL and ARMv7 in addition to ARM in "if"
    statement to handle platforms with a link register.

    * llint/LowLevelInterpreter.asm:
    (prepareForTailCall):

LayoutTests:
Relanding r190289 after fixes tracked in https://bugs.webkit.org/show_bug.cgi?id=149619
and https://bugs.webkit.org/show_bug.cgi?id=149621

Reviewed by Saam Barati.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@190370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
42 files changed:
LayoutTests/ChangeLog
LayoutTests/js/caller-property-expected.txt
LayoutTests/js/script-tests/caller-property.js
Source/JavaScriptCore/CMakeLists.txt
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj
Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
Source/JavaScriptCore/dfg/DFGClobberize.h
Source/JavaScriptCore/dfg/DFGNode.h
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp
Source/JavaScriptCore/ftl/FTLCapabilities.cpp
Source/JavaScriptCore/ftl/FTLCompile.cpp
Source/JavaScriptCore/ftl/FTLInlineCacheSize.cpp
Source/JavaScriptCore/ftl/FTLInlineCacheSize.h
Source/JavaScriptCore/ftl/FTLJSCall.cpp
Source/JavaScriptCore/ftl/FTLJSCallBase.cpp
Source/JavaScriptCore/ftl/FTLJSCallBase.h
Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp
Source/JavaScriptCore/ftl/FTLJSTailCall.cpp [new file with mode: 0644]
Source/JavaScriptCore/ftl/FTLJSTailCall.h [new file with mode: 0644]
Source/JavaScriptCore/ftl/FTLLocation.h
Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
Source/JavaScriptCore/ftl/FTLState.h
Source/JavaScriptCore/jit/AssemblyHelpers.cpp
Source/JavaScriptCore/jit/CallFrameShuffleData.h
Source/JavaScriptCore/jit/CallFrameShuffler.cpp
Source/JavaScriptCore/jit/CallFrameShuffler.h
Source/JavaScriptCore/jit/CallFrameShuffler64.cpp
Source/JavaScriptCore/jit/JITCall.cpp
Source/JavaScriptCore/jit/Reg.h
Source/JavaScriptCore/llint/LowLevelInterpreter.asm
Source/JavaScriptCore/runtime/Options.h
Source/JavaScriptCore/tests/es6.yaml
Source/JavaScriptCore/tests/stress/dfg-tail-calls.js [new file with mode: 0644]
Source/JavaScriptCore/tests/stress/mutual-tail-call-no-stack-overflow.js [new file with mode: 0644]
Source/JavaScriptCore/tests/stress/tail-call-no-stack-overflow.js [new file with mode: 0644]
Source/JavaScriptCore/tests/stress/tail-call-recognize.js [new file with mode: 0644]
Source/JavaScriptCore/tests/stress/tail-call-varargs-no-stack-overflow.js [new file with mode: 0644]
Source/JavaScriptCore/tests/stress/tail-calls-dont-overwrite-live-stack.js [new file with mode: 0644]