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 169a032fb030c242448f4d491174348cc892a5ad..d402694e40431dd62eda4c9b3f2650a1841d4f00 100644 |
| --- a/src/arm/code-stubs-arm.cc |
| +++ b/src/arm/code-stubs-arm.cc |
| @@ -3410,16 +3410,16 @@ void TranscendentalCacheStub::Generate(MacroAssembler* masm) { |
| Label skip_cache; |
| // Call C function to calculate the result and update the cache. |
| - // Register r0 holds precalculated cache entry address; preserve |
| - // it on the stack and pop it into register cache_entry after the |
| - // call. |
| - __ push(cache_entry); |
| + // r0: precalculated cache entry address. |
| + // r2 and r3: parts of the double value. |
| + // Store r0, r2 and r3 on stack for later before calling C function. |
| + __ stm(db_w, sp, cache_entry.bit() | r2.bit() | r3.bit()); |
|
Jakob Kummerow
2012/07/16 09:24:09
Let's use "__ Push(cache_entry, r2, r3)" instead.
|
| GenerateCallCFunction(masm, scratch0); |
| __ GetCFunctionDoubleResult(d2); |
| // Try to update the cache. If we cannot allocate a |
| // heap number, we return the result without updating. |
| - __ pop(cache_entry); |
| + __ ldm(ia_w, sp, cache_entry.bit() | r2.bit() | r3.bit()); |
|
Jakob Kummerow
2012/07/16 09:24:09
...and __ Pop(...) here.
|
| __ LoadRoot(r5, Heap::kHeapNumberMapRootIndex); |
| __ AllocateHeapNumber(r6, scratch0, scratch1, r5, &no_update); |
| __ vstr(d2, FieldMemOperand(r6, HeapNumber::kValueOffset)); |