| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 3524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3535 __ mov(a0, s0); | 3535 __ mov(a0, s0); |
| 3536 __ mov(a1, s1); | 3536 __ mov(a1, s1); |
| 3537 | 3537 |
| 3538 // We are calling compiled C/C++ code. a0 and a1 hold our two arguments. We | 3538 // We are calling compiled C/C++ code. a0 and a1 hold our two arguments. We |
| 3539 // also need to reserve the 4 argument slots on the stack. | 3539 // also need to reserve the 4 argument slots on the stack. |
| 3540 | 3540 |
| 3541 __ AssertStackIsAligned(); | 3541 __ AssertStackIsAligned(); |
| 3542 | 3542 |
| 3543 __ li(a2, Operand(ExternalReference::isolate_address())); | 3543 __ li(a2, Operand(ExternalReference::isolate_address())); |
| 3544 | 3544 |
| 3545 // From arm version of this function: | 3545 // To let the GC traverse the return address of the exit frames, we need to |
| 3546 // TODO(1242173): To let the GC traverse the return address of the exit | 3546 // know where the return address is. The CEntryStub is unmovable, so |
| 3547 // frames, we need to know where the return address is. Right now, | 3547 // we can store the address on the stack to be able to find it again and |
| 3548 // we push it on the stack to be able to find it again, but we never | 3548 // we never have to restore it, because it will not change. |
| 3549 // restore from it in case of changes, which makes it impossible to | |
| 3550 // support moving the C entry code stub. This should be fixed, but currently | |
| 3551 // this is OK because the CEntryStub gets generated so early in the V8 boot | |
| 3552 // sequence that it is not moving ever. | |
| 3553 | |
| 3554 { Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm); | 3549 { Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm); |
| 3555 // This branch-and-link sequence is needed to find the current PC on mips, | 3550 // This branch-and-link sequence is needed to find the current PC on mips, |
| 3556 // saved to the ra register. | 3551 // saved to the ra register. |
| 3557 // Use masm-> here instead of the double-underscore macro since extra | 3552 // Use masm-> here instead of the double-underscore macro since extra |
| 3558 // coverage code can interfere with the proper calculation of ra. | 3553 // coverage code can interfere with the proper calculation of ra. |
| 3559 Label find_ra; | 3554 Label find_ra; |
| 3560 masm->bal(&find_ra); // bal exposes branch delay slot. | 3555 masm->bal(&find_ra); // bal exposes branch delay slot. |
| 3561 masm->nop(); // Branch delay slot nop. | 3556 masm->nop(); // Branch delay slot nop. |
| 3562 masm->bind(&find_ra); | 3557 masm->bind(&find_ra); |
| 3563 | 3558 |
| (...skipping 3090 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6654 __ mov(result, zero_reg); | 6649 __ mov(result, zero_reg); |
| 6655 __ Ret(); | 6650 __ Ret(); |
| 6656 } | 6651 } |
| 6657 | 6652 |
| 6658 | 6653 |
| 6659 #undef __ | 6654 #undef __ |
| 6660 | 6655 |
| 6661 } } // namespace v8::internal | 6656 } } // namespace v8::internal |
| 6662 | 6657 |
| 6663 #endif // V8_TARGET_ARCH_MIPS | 6658 #endif // V8_TARGET_ARCH_MIPS |
| OLD | NEW |