OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 Push(src2, src3, src4, cond); | 227 Push(src2, src3, src4, cond); |
228 } | 228 } |
229 } | 229 } |
230 | 230 |
231 // Push and pop the registers that can hold pointers, as defined by the | 231 // Push and pop the registers that can hold pointers, as defined by the |
232 // RegList constant kSafepointSavedRegisters. | 232 // RegList constant kSafepointSavedRegisters. |
233 void PushSafepointRegisters(); | 233 void PushSafepointRegisters(); |
234 void PopSafepointRegisters(); | 234 void PopSafepointRegisters(); |
235 void PushSafepointRegistersAndDoubles(); | 235 void PushSafepointRegistersAndDoubles(); |
236 void PopSafepointRegistersAndDoubles(); | 236 void PopSafepointRegistersAndDoubles(); |
237 | 237 void StoreToSafepointRegisters(Register reg); |
238 static int SafepointRegisterStackIndex(int reg_code); | 238 static int SafepointRegisterStackIndex(int reg_code); |
| 239 static MemOperand SafepointRegisterSlot(Register reg); |
239 | 240 |
240 // Load two consecutive registers with two consecutive memory locations. | 241 // Load two consecutive registers with two consecutive memory locations. |
241 void Ldrd(Register dst1, | 242 void Ldrd(Register dst1, |
242 Register dst2, | 243 Register dst2, |
243 const MemOperand& src, | 244 const MemOperand& src, |
244 Condition cond = al); | 245 Condition cond = al); |
245 | 246 |
246 // Store two consecutive registers to two consecutive memory locations. | 247 // Store two consecutive registers to two consecutive memory locations. |
247 void Strd(Register src1, | 248 void Strd(Register src1, |
248 Register src2, | 249 Register src2, |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
769 Register scratch2, | 770 Register scratch2, |
770 Label* failure); | 771 Label* failure); |
771 | 772 |
772 // Check if instance type is sequential ASCII string and jump to label if | 773 // Check if instance type is sequential ASCII string and jump to label if |
773 // it is not. | 774 // it is not. |
774 void JumpIfInstanceTypeIsNotSequentialAscii(Register type, | 775 void JumpIfInstanceTypeIsNotSequentialAscii(Register type, |
775 Register scratch, | 776 Register scratch, |
776 Label* failure); | 777 Label* failure); |
777 | 778 |
778 | 779 |
| 780 // --------------------------------------------------------------------------- |
| 781 // Patching helpers. |
| 782 |
| 783 // Get the location of a relocated constant (its address in the constant pool) |
| 784 // from its load site. |
| 785 void GetRelocatedValueLocation(Register ldr_location, |
| 786 Register result); |
| 787 |
| 788 |
779 private: | 789 private: |
780 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); | 790 void Jump(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); |
781 void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); | 791 void Call(intptr_t target, RelocInfo::Mode rmode, Condition cond = al); |
782 | 792 |
783 // Helper functions for generating invokes. | 793 // Helper functions for generating invokes. |
784 void InvokePrologue(const ParameterCount& expected, | 794 void InvokePrologue(const ParameterCount& expected, |
785 const ParameterCount& actual, | 795 const ParameterCount& actual, |
786 Handle<Code> code_constant, | 796 Handle<Code> code_constant, |
787 Register code_reg, | 797 Register code_reg, |
788 Label* done, | 798 Label* done, |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
865 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 875 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
866 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 876 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
867 #else | 877 #else |
868 #define ACCESS_MASM(masm) masm-> | 878 #define ACCESS_MASM(masm) masm-> |
869 #endif | 879 #endif |
870 | 880 |
871 | 881 |
872 } } // namespace v8::internal | 882 } } // namespace v8::internal |
873 | 883 |
874 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 884 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |