Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index a8a4b5f5ac5f24bf4e3f0b4d70c2cd2f2acd745a..02b945f1776ab33f1ee08c55724f58c2c3d6a9ef 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -974,14 +974,21 @@ void CEntryStub::Generate(MacroAssembler* masm) { |
// fp: frame pointer (restored after C call) |
// sp: stack pointer (restored as callee's sp after C call) |
// cp: current context (C callee-saved) |
- |
+ // |
+ // If argv_in_register(): |
+ // r2: pointer to the first argument |
ProfileEntryHookStub::MaybeCallEntryHook(masm); |
__ mov(r5, Operand(r1)); |
- // Compute the argv pointer in a callee-saved register. |
- __ add(r1, sp, Operand(r0, LSL, kPointerSizeLog2)); |
- __ sub(r1, r1, Operand(kPointerSize)); |
+ if (!argv_in_register()) { |
+ // Compute the argv pointer in a callee-saved register. |
+ __ add(r1, sp, Operand(r0, LSL, kPointerSizeLog2)); |
+ __ sub(r1, r1, Operand(kPointerSize)); |
+ } else { |
+ // Move argv into the correct register. |
+ __ mov(r1, Operand(r2)); |
+ } |
// Enter the exit frame that transitions from JavaScript to C++. |
FrameScope scope(masm, StackFrame::MANUAL); |