Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: src/arm/assembler-arm.h

Issue 24714004: Thumb2 Backend: Update Code objects with mode, separate Assembler methods for Thumb2 Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm/assembler-arm-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 736 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 void bind(Label* L); // binds an unbound label L to the current code position 747 void bind(Label* L); // binds an unbound label L to the current code position
748 748
749 // Returns the branch offset to the given label from the current code position 749 // Returns the branch offset to the given label from the current code position
750 // Links the label to the current position if it is still unbound 750 // Links the label to the current position if it is still unbound
751 // Manages the jump elimination optimization if the second parameter is true. 751 // Manages the jump elimination optimization if the second parameter is true.
752 int branch_offset(Label* L, bool jump_elimination_allowed); 752 int branch_offset(Label* L, bool jump_elimination_allowed);
753 753
754 // Return the address in the constant pool of the code target address used by 754 // Return the address in the constant pool of the code target address used by
755 // the branch/call instruction at pc, or the object in a mov. 755 // the branch/call instruction at pc, or the object in a mov.
756 INLINE(static Address target_pointer_address_at(Address pc)); 756 INLINE(static Address target_pointer_address_at(Address pc));
757 INLINE(static Address thumb_target_pointer_address_at(Address pc));
757 758
758 // Read/Modify the pointer in the branch/call/move instruction at pc. 759 // Read/Modify the pointer in the branch/call/move instruction at pc.
759 INLINE(static Address target_pointer_at(Address pc)); 760 INLINE(static Address target_pointer_at(Address pc));
760 INLINE(static void set_target_pointer_at(Address pc, Address target)); 761 INLINE(static void set_target_pointer_at(Address pc, Address target));
762 INLINE(static Address thumb_target_pointer_at(Address pc));
763 INLINE(static void thumb_set_target_pointer_at(Address pc,
764 Address target,
765 Code* host = NULL));
761 766
762 // Read/Modify the code target address in the branch/call instruction at pc. 767 // Read/Modify the code target address in the branch/call instruction at pc.
763 INLINE(static Address target_address_at(Address pc)); 768 INLINE(static Address target_address_at(Address pc));
764 INLINE(static void set_target_address_at(Address pc, Address target)); 769 INLINE(static void set_target_address_at(Address pc, Address target));
765 770
766 // Return the code target address at a call site from the return address 771 // Return the code target address at a call site from the return address
767 // of that call in the instruction stream. 772 // of that call in the instruction stream.
768 INLINE(static Address target_address_from_return_address(Address pc)); 773 INLINE(static Address target_address_from_return_address(Address pc));
769 774
770 // Given the address of the beginning of a call, return the address 775 // Given the address of the beginning of a call, return the address
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 static bool IsTstImmediate(Instr instr); 1582 static bool IsTstImmediate(Instr instr);
1578 static bool IsCmpRegister(Instr instr); 1583 static bool IsCmpRegister(Instr instr);
1579 static bool IsCmpImmediate(Instr instr); 1584 static bool IsCmpImmediate(Instr instr);
1580 static Register GetCmpImmediateRegister(Instr instr); 1585 static Register GetCmpImmediateRegister(Instr instr);
1581 static int GetCmpImmediateRawImmediate(Instr instr); 1586 static int GetCmpImmediateRawImmediate(Instr instr);
1582 static bool IsNop(Instr instr, int type = NON_MARKING_NOP); 1587 static bool IsNop(Instr instr, int type = NON_MARKING_NOP);
1583 static bool IsMovT(Instr instr); 1588 static bool IsMovT(Instr instr);
1584 static bool IsMovW(Instr instr); 1589 static bool IsMovW(Instr instr);
1585 static bool IsMovTThumb(Instr instr); 1590 static bool IsMovTThumb(Instr instr);
1586 static bool IsMovWThumb(Instr instr); 1591 static bool IsMovWThumb(Instr instr);
1592 static bool IsThumbLdrPcImmediateOffset(Instr instr);
1593 static inline Address UntagAddress(Address addr);
1594 static inline bool IsThumbAddress(Address addr);
1595 static inline Address AlignAddress(Address addr);
1587 1596
1588 // Constants in pools are accessed via pc relative addressing, which can 1597 // Constants in pools are accessed via pc relative addressing, which can
1589 // reach +/-4KB for integer PC-relative loads and +/-1KB for floating-point 1598 // reach +/-4KB for integer PC-relative loads and +/-1KB for floating-point
1590 // PC-relative loads, thereby defining a maximum distance between the 1599 // PC-relative loads, thereby defining a maximum distance between the
1591 // instruction and the accessed constant. 1600 // instruction and the accessed constant.
1592 static const int kMaxDistToIntPool = 4*KB; 1601 static const int kMaxDistToIntPool = 4*KB;
1593 static const int kMaxDistToFPPool = 1*KB; 1602 static const int kMaxDistToFPPool = 1*KB;
1594 // All relocations could be integer, it therefore acts as the limit. 1603 // All relocations could be integer, it therefore acts as the limit.
1595 static const int kMaxNumPendingRelocInfo = kMaxDistToIntPool/kInstrSize; 1604 static const int kMaxNumPendingRelocInfo = kMaxDistToIntPool/kInstrSize;
1596 1605
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 public: 1882 public:
1874 explicit EnsureSpace(Assembler* assembler) { 1883 explicit EnsureSpace(Assembler* assembler) {
1875 assembler->CheckBuffer(); 1884 assembler->CheckBuffer();
1876 } 1885 }
1877 }; 1886 };
1878 1887
1879 1888
1880 } } // namespace v8::internal 1889 } } // namespace v8::internal
1881 1890
1882 #endif // V8_ARM_ASSEMBLER_ARM_H_ 1891 #endif // V8_ARM_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/assembler-arm-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698