| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index 37e1876f3decedeb786aeb80834d48e1ff4c53e3..cd55f5705fc33254abc75ba81f1e2f92491328c4 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -2425,11 +2425,23 @@ void CEntryStub::Generate(MacroAssembler* masm) {
|
| // esp: stack pointer (restored after C call)
|
| // esi: current context (C callee-saved)
|
| // edi: JS function of the caller (C callee-saved)
|
| + //
|
| + // If argv_in_register():
|
| + // ecx: pointer to the first argument
|
|
|
| ProfileEntryHookStub::MaybeCallEntryHook(masm);
|
|
|
| // Enter the exit frame that transitions from JavaScript to C++.
|
| - __ EnterExitFrame(save_doubles());
|
| + if (argv_in_register()) {
|
| + DCHECK(!save_doubles());
|
| + __ EnterApiExitFrame(3);
|
| +
|
| + // Move argc and argv into the correct registers.
|
| + __ mov(esi, ecx);
|
| + __ mov(edi, eax);
|
| + } else {
|
| + __ EnterExitFrame(save_doubles());
|
| + }
|
|
|
| // ebx: pointer to C function (C callee-saved)
|
| // ebp: frame pointer (restored after C call)
|
|
|