Chromium Code Reviews| 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 p13 = 13, | 158 p13 = 13, |
| 159 p14 = 14, | 159 p14 = 14, |
| 160 p15 = 15 | 160 p15 = 15 |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 | 163 |
| 164 // Condition field in instructions | 164 // Condition field in instructions |
| 165 enum Condition { | 165 enum Condition { |
| 166 eq = 0 << 28, // Z set equal. | 166 eq = 0 << 28, // Z set equal. |
| 167 ne = 1 << 28, // Z clear not equal. | 167 ne = 1 << 28, // Z clear not equal. |
| 168 cs = 2 << 28, // C set unsigned higher or same. | 168 nz = 1 << 28, // Z clear not zero. |
| 169 cs = 2 << 28, // C set carry set. | |
| 169 hs = 2 << 28, // C set unsigned higher or same. | 170 hs = 2 << 28, // C set unsigned higher or same. |
| 170 cc = 3 << 28, // C clear unsigned lower. | 171 cc = 3 << 28, // C clear carry clear. |
| 171 lo = 3 << 28, // C clear unsigned lower. | 172 lo = 3 << 28, // C clear unsigned lower. |
| 172 mi = 4 << 28, // N set negative. | 173 mi = 4 << 28, // N set negative. |
| 173 pl = 5 << 28, // N clear positive or zero. | 174 pl = 5 << 28, // N clear positive or zero. |
| 174 vs = 6 << 28, // V set overflow. | 175 vs = 6 << 28, // V set overflow. |
| 175 vc = 7 << 28, // V clear no overflow. | 176 vc = 7 << 28, // V clear no overflow. |
| 176 hi = 8 << 28, // C set, Z clear unsigned higher. | 177 hi = 8 << 28, // C set, Z clear unsigned higher. |
| 177 ls = 9 << 28, // C clear or Z set unsigned lower or same. | 178 ls = 9 << 28, // C clear or Z set unsigned lower or same. |
| 178 ge = 10 << 28, // N == V greater or equal. | 179 ge = 10 << 28, // N == V greater or equal. |
| 179 lt = 11 << 28, // N != V less than. | 180 lt = 11 << 28, // N != V less than. |
| 180 gt = 12 << 28, // Z clear, N == V greater than. | 181 gt = 12 << 28, // Z clear, N == V greater than. |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 413 // Note: The same Label can be used for forward and backward branches | 414 // Note: The same Label can be used for forward and backward branches |
| 414 // but it may be bound only once. | 415 // but it may be bound only once. |
| 415 | 416 |
| 416 void bind(Label* L); // binds an unbound label L to the current code position | 417 void bind(Label* L); // binds an unbound label L to the current code position |
| 417 | 418 |
| 418 // Returns the branch offset to the given label from the current code position | 419 // Returns the branch offset to the given label from the current code position |
| 419 // Links the label to the current position if it is still unbound | 420 // Links the label to the current position if it is still unbound |
| 420 // Manages the jump elimination optimization if the second parameter is true. | 421 // Manages the jump elimination optimization if the second parameter is true. |
| 421 int branch_offset(Label* L, bool jump_elimination_allowed); | 422 int branch_offset(Label* L, bool jump_elimination_allowed); |
| 422 | 423 |
| 424 // Puts a labels target address at the given position. | |
|
Erik Corry
2009/08/27 14:43:05
labels -> label's
| |
| 425 // The high 8 bits are set to zero. | |
|
Erik Corry
2009/08/27 14:43:05
I wonder why?
| |
| 426 void label_at_put(Label* L, int at_offset); | |
|
Erik Corry
2009/08/27 14:43:05
Gotta love that smalltalk syntax, but the index sh
| |
| 427 | |
| 423 // Return the address in the constant pool of the code target address used by | 428 // Return the address in the constant pool of the code target address used by |
| 424 // the branch/call instruction at pc. | 429 // the branch/call instruction at pc. |
| 425 INLINE(static Address target_address_address_at(Address pc)); | 430 INLINE(static Address target_address_address_at(Address pc)); |
| 426 | 431 |
| 427 // Read/Modify the code target address in the branch/call instruction at pc. | 432 // Read/Modify the code target address in the branch/call instruction at pc. |
| 428 INLINE(static Address target_address_at(Address pc)); | 433 INLINE(static Address target_address_at(Address pc)); |
| 429 INLINE(static void set_target_address_at(Address pc, Address target)); | 434 INLINE(static void set_target_address_at(Address pc, Address target)); |
| 430 | 435 |
| 431 // Distance between the instruction referring to the address of the call | 436 // Distance between the instruction referring to the address of the call |
| 432 // target (ldr pc, [target addr in const pool]) and the return address | 437 // target (ldr pc, [target addr in const pool]) and the return address |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 777 void addrmod5(Instr instr, CRegister crd, const MemOperand& x); | 782 void addrmod5(Instr instr, CRegister crd, const MemOperand& x); |
| 778 | 783 |
| 779 // Labels | 784 // Labels |
| 780 void print(Label* L); | 785 void print(Label* L); |
| 781 void bind_to(Label* L, int pos); | 786 void bind_to(Label* L, int pos); |
| 782 void link_to(Label* L, Label* appendix); | 787 void link_to(Label* L, Label* appendix); |
| 783 void next(Label* L); | 788 void next(Label* L); |
| 784 | 789 |
| 785 // Record reloc info for current pc_ | 790 // Record reloc info for current pc_ |
| 786 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); | 791 void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); |
| 792 | |
| 793 friend class RegExpMacroAssemblerARM; | |
| 787 }; | 794 }; |
| 788 | 795 |
| 789 } } // namespace v8::internal | 796 } } // namespace v8::internal |
| 790 | 797 |
| 791 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 798 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
| OLD | NEW |