OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #if V8_TARGET_ARCH_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
6 | 6 |
7 #include "src/regexp/mips64/regexp-macro-assembler-mips64.h" | 7 #include "src/regexp/mips64/regexp-macro-assembler-mips64.h" |
8 | 8 |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/log.h" | 10 #include "src/log.h" |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
664 // Save callee-save registers. | 664 // Save callee-save registers. |
665 // Start new stack frame. | 665 // Start new stack frame. |
666 // Store link register in existing stack-cell. | 666 // Store link register in existing stack-cell. |
667 // Order here should correspond to order of offset constants in header file. | 667 // Order here should correspond to order of offset constants in header file. |
668 // TODO(plind): we save s0..s7, but ONLY use s3 here - use the regs | 668 // TODO(plind): we save s0..s7, but ONLY use s3 here - use the regs |
669 // or dont save. | 669 // or dont save. |
670 RegList registers_to_retain = s0.bit() | s1.bit() | s2.bit() | | 670 RegList registers_to_retain = s0.bit() | s1.bit() | s2.bit() | |
671 s3.bit() | s4.bit() | s5.bit() | s6.bit() | s7.bit() | fp.bit(); | 671 s3.bit() | s4.bit() | s5.bit() | s6.bit() | s7.bit() | fp.bit(); |
672 RegList argument_registers = a0.bit() | a1.bit() | a2.bit() | a3.bit(); | 672 RegList argument_registers = a0.bit() | a1.bit() | a2.bit() | a3.bit(); |
673 | 673 |
674 if (kMipsAbi == kN64) { | 674 argument_registers |= a4.bit() | a5.bit() | a6.bit() | a7.bit(); |
balazs.kilvady
2016/01/28 12:48:22
I think a4-a7 bits could be 'or'-ed to the above l
Ilija.Pavlovic1
2016/01/28 15:07:30
Yes, you are right. I didn't noted that definition
| |
675 // TODO(plind): Should probably alias a4-a7, for clarity. | |
676 argument_registers |= a4.bit() | a5.bit() | a6.bit() | a7.bit(); | |
677 } | |
678 | 675 |
679 __ MultiPush(argument_registers | registers_to_retain | ra.bit()); | 676 __ MultiPush(argument_registers | registers_to_retain | ra.bit()); |
680 // Set frame pointer in space for it if this is not a direct call | 677 // Set frame pointer in space for it if this is not a direct call |
681 // from generated code. | 678 // from generated code. |
682 // TODO(plind): this 8 is the # of argument regs, should have definition. | 679 // TODO(plind): this 8 is the # of argument regs, should have definition. |
683 __ Daddu(frame_pointer(), sp, Operand(8 * kPointerSize)); | 680 __ Daddu(frame_pointer(), sp, Operand(8 * kPointerSize)); |
684 __ mov(a0, zero_reg); | 681 __ mov(a0, zero_reg); |
685 __ push(a0); // Make room for success counter and initialize it to 0. | 682 __ push(a0); // Make room for success counter and initialize it to 0. |
686 __ push(a0); // Make room for "string start - 1" constant. | 683 __ push(a0); // Make room for "string start - 1" constant. |
687 | 684 |
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1330 } | 1327 } |
1331 | 1328 |
1332 #undef __ | 1329 #undef __ |
1333 | 1330 |
1334 #endif // V8_INTERPRETED_REGEXP | 1331 #endif // V8_INTERPRETED_REGEXP |
1335 | 1332 |
1336 } // namespace internal | 1333 } // namespace internal |
1337 } // namespace v8 | 1334 } // namespace v8 |
1338 | 1335 |
1339 #endif // V8_TARGET_ARCH_MIPS64 | 1336 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |