New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JSC] B3/Air should use the system register convention #8005
[JSC] B3/Air should use the system register convention #8005
Conversation
EWS run on current version of this PR (hash e93f2b8) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me
I still don't have a commit bit--waiting on someone at Apple to countersign, as I understand it |
https://bugs.webkit.org/show_bug.cgi?id=249776 Reviewed by Yusuke Suzuki. A previous patch (189dce5) changed several of these locations to use the `vmCalleeSaveRegisters` over the `calleeSaveRegisters`--change them back. Though on most platforms with Air support, these two register sets are identical, on ARMv7, which is new to the Air club, fewer registers are included in the VM register calee-save set than in the system's callee-save set, which caused problems with unwinding. This patch also addresses the ARMv7-only issue with unwinding: if an Air callee in a VM stack being unwound saves registers other than VM callee-saves, they simply won't be restored--this is OK for the time being as VM callers will only expect the VM callee-saves to be preserved. Eventually we may want to enable code generation on ARMv7 to select the VM convention over the system one to avoid unnecessary save/restores in ARM-generated code. (The alternative, making vmCalleeSaveRegisters use all of the available platform callee-saves, isn't appealing, as we want more temporary registers available to the assembler and lower tiers) Note that the usage in `B3StackGenerationParams.cpp` was actually more-or-less original to that file. Still, it seems correct to use `calleeSaveRegisters` there. (And again, on platforms other than ARMv7, the change is a no-op; the sets are identical) * Source/JavaScriptCore/b3/B3StackmapGenerationParams.cpp: (JSC::B3::StackmapGenerationParams::unavailableRegisters const): * Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp: (JSC::B3::Air::GenerateAndAllocateRegisters::prepareForGeneration): * Source/JavaScriptCore/b3/air/AirCode.cpp: (JSC::B3::Air::Code::Code): * Source/JavaScriptCore/b3/air/AirHandleCalleeSaves.cpp: (JSC::B3::Air::handleCalleeSaves): * Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp: (JSC::B3::Air::lowerAfterRegAlloc): * Source/JavaScriptCore/b3/air/testair.cpp: * Source/JavaScriptCore/interpreter/Interpreter.cpp: (JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const): Canonical link: https://commits.webkit.org/258261@main
e93f2b8
to
cbff45e
Compare
Committed 258261@main (cbff45e): https://commits.webkit.org/258261@main Reviewed commits have been landed. Closing PR #8005 and removing active labels. |
cbff45e
e93f2b8
π§ͺ api-ios