Bug 125653

Summary: CStack Branch: Eliminate unnecessary add/sub 16 to stack pointer
Product: WebKit Reporter: Michael Saboff <msaboff>
Component: JavaScriptCoreAssignee: Michael Saboff <msaboff>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
Patch ggaren: review+

Michael Saboff
Reported 2013-12-12 14:05:16 PST
The DFG call out code constructs a new callee frame relative to the stack pointer. Currently before making a call, it decrements the stack pointer by 16 to have it point above the returnPC and caller frame slots. Instead, the stack pointer should be set properly at the top of the function so that the callee frame above the returnPC can be constructed relative to the stack pointer and then issue a call without adjusting the stack pointer.
Attachments
Patch (6.75 KB, patch)
2013-12-12 14:51 PST, Michael Saboff
ggaren: review+
Michael Saboff
Comment 1 2013-12-12 14:51:05 PST
Michael Saboff
Comment 2 2013-12-12 14:52:21 PST
Landed in 160506 on the jsCStack branch: <http://trac.webkit.org/160506>
Geoffrey Garen
Comment 3 2013-12-12 15:30:57 PST
Comment on attachment 219122 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=219122&action=review r=me > Source/JavaScriptCore/dfg/DFGGraph.cpp:706 > + unsigned result = m_nextMachineLocal + std::max(m_parameterSlots, (unsigned)JSStack::CallerFrameAndPCSize); static_cast, please. > Source/JavaScriptCore/dfg/DFGGraph.cpp:707 > result += result & 1; // Align the register count This would be better expressed as "result = roundUpToMultipleOf<stackAlignment>(result);", and no comment. > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:44 > +const CallerFrameAndPCSize = 2 * PtrSize Please add an ASSERT for this to LLIntData.cpp.
Michael Saboff
Comment 4 2013-12-12 16:15:59 PST
Changes from review landed in 160514 on the jsCStack branch: <http://trac.webkit.org/160514 >
Note You need to log in before you can comment on or make changes to this bug.