OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 // the branch/call instruction at pc. | 424 // the branch/call instruction at pc. |
425 INLINE(static Address target_address_address_at(Address pc)); | 425 INLINE(static Address target_address_address_at(Address pc)); |
426 | 426 |
427 // Read/Modify the code target address in the branch/call instruction at pc. | 427 // Read/Modify the code target address in the branch/call instruction at pc. |
428 INLINE(static Address target_address_at(Address pc)); | 428 INLINE(static Address target_address_at(Address pc)); |
429 INLINE(static void set_target_address_at(Address pc, Address target)); | 429 INLINE(static void set_target_address_at(Address pc, Address target)); |
430 | 430 |
431 // Distance between the instruction referring to the address of the call | 431 // Distance between the instruction referring to the address of the call |
432 // target (ldr pc, [target addr in const pool]) and the return address | 432 // target (ldr pc, [target addr in const pool]) and the return address |
433 static const int kTargetAddrToReturnAddrDist = sizeof(Instr); | 433 static const int kTargetAddrToReturnAddrDist = sizeof(Instr); |
| 434 // Distance between start of patched return sequence and the emitted address |
| 435 // to jump to. |
| 436 static const int kReturnAddrPatchPrefixSize = 1; |
434 | 437 |
435 | 438 |
436 // --------------------------------------------------------------------------- | 439 // --------------------------------------------------------------------------- |
437 // Code generation | 440 // Code generation |
438 | 441 |
439 // Insert the smallest number of nop instructions | 442 // Insert the smallest number of nop instructions |
440 // possible to align the pc offset to a multiple | 443 // possible to align the pc offset to a multiple |
441 // of m. m must be a power of 2 (>= 4). | 444 // of m. m must be a power of 2 (>= 4). |
442 void Align(int m); | 445 void Align(int m); |
443 | 446 |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 void link_to(Label* L, Label* appendix); | 782 void link_to(Label* L, Label* appendix); |
780 void next(Label* L); | 783 void next(Label* L); |
781 | 784 |
782 // Record reloc info for current pc_ | 785 // Record reloc info for current pc_ |
783 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); | 786 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); |
784 }; | 787 }; |
785 | 788 |
786 } } // namespace v8::internal | 789 } } // namespace v8::internal |
787 | 790 |
788 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 791 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
OLD | NEW |