Chromium Code Reviews| Index: src/arm/code-stubs-arm.cc |
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
| index 590d8ce15ed03eaea8143f36710f264a257fd920..be296d325cac663a4e6ca85aa135366a86737ee5 100644 |
| --- a/src/arm/code-stubs-arm.cc |
| +++ b/src/arm/code-stubs-arm.cc |
| @@ -3329,9 +3329,17 @@ void CEntryStub::Generate(MacroAssembler* masm) { |
| // this by performing a garbage collection and retrying the |
| // builtin once. |
| + // Compute the argv pointer in a callee-saved register. |
| + __ add(r6, sp, Operand(r0, LSL, kPointerSizeLog2)); |
| + __ sub(r6, r6, Operand(kPointerSize)); |
| + |
| // Enter the exit frame that transitions from JavaScript to C++. |
| __ EnterExitFrame(save_doubles_); |
| + // Setup argc and the builtin function in callee-saved registers. |
| + __ mov(r4, Operand(r0)); |
| + __ mov(r5, Operand(r1)); |
| + |
| // r4: number of arguments (C callee-saved) |
| // r5: pointer to builtin function (C callee-saved) |
| // r6: pointer to first argument (C callee-saved) |
| @@ -5733,6 +5741,22 @@ void ICCompareStub::GenerateMiss(MacroAssembler* masm) { |
| __ Jump(r2); |
| } |
|
Erik Corry
2011/02/04 09:55:55
Missing blank line.
antonm
2011/02/04 12:59:45
Done.
|
| +void DirectCEntryStub::Generate(MacroAssembler* masm) { |
| + __ ldr(pc, MemOperand(sp, 0)); |
| +} |
| + |
|
Erik Corry
2011/02/04 09:55:55
and here
antonm
2011/02/04 12:59:45
Done.
|
| +void DirectCEntryStub::GenerateCall(MacroAssembler* masm, |
| + ApiFunction *function) { |
| + __ mov(lr, Operand(reinterpret_cast<intptr_t>(GetCode().location()), |
| + RelocInfo::CODE_TARGET)); |
| + // Push return address (accessible to GC through exit frame pc). |
| + ExternalReference ref = |
| + ExternalReference(function, ExternalReference::DIRECT_CALL); |
| + __ mov(r2, Operand(reinterpret_cast<intptr_t>(ref.address()))); |
|
Erik Corry
2011/02/04 09:55:55
There is a constructor for Operand that takes an e
antonm
2011/02/04 12:59:45
Done.
|
| + __ add(ip, pc, Operand(4)); |
|
Erik Corry
2011/02/04 09:55:55
It seems to me that omitting this add and just usi
antonm
2011/02/04 12:59:45
Hmm, ip would have any garbage then. Am I missing
Zaheer
2011/02/04 13:08:05
I think Erik meant pc.
Erik Corry
2011/02/04 13:19:52
No you are right of course.
|
| + __ str(ip, MemOperand(sp, 0)); |
| + __ Jump(r2); // Call the api function. |
| +} |
|
Erik Corry
2011/02/04 09:55:55
and missing blank line here
antonm
2011/02/04 12:59:45
Done.
|
| #undef __ |