| Index: src/x64/virtual-frame-x64.cc
|
| ===================================================================
|
| --- src/x64/virtual-frame-x64.cc (revision 3837)
|
| +++ src/x64/virtual-frame-x64.cc (working copy)
|
| @@ -1019,14 +1019,17 @@
|
| Result VirtualFrame::CallCallIC(RelocInfo::Mode mode,
|
| int arg_count,
|
| int loop_nesting) {
|
| - // Arguments, receiver, and function name are on top of the frame.
|
| - // The IC expects them on the stack. It does not drop the function
|
| - // name slot (but it does drop the rest).
|
| + // Function name, arguments, and receiver are found on top of the frame
|
| + // and dropped by the call. The IC expects the name in rcx and the rest
|
| + // on the stack, and drops them all.
|
| InLoopFlag in_loop = loop_nesting > 0 ? IN_LOOP : NOT_IN_LOOP;
|
| Handle<Code> ic = cgen()->ComputeCallInitialize(arg_count, in_loop);
|
| + Result name = Pop();
|
| // Spill args, receiver, and function. The call will drop args and
|
| // receiver.
|
| - PrepareForCall(arg_count + 2, arg_count + 1);
|
| + PrepareForCall(arg_count + 1, arg_count + 1);
|
| + name.ToRegister(rcx);
|
| + name.Unuse();
|
| return RawCallCodeObject(ic, mode);
|
| }
|
|
|
|
|