| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 4143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4154 void MacroAssembler::PushSafepointRegisters() { | 4154 void MacroAssembler::PushSafepointRegisters() { |
| 4155 // Safepoints expect a block of kNumSafepointRegisters values on the stack, so | 4155 // Safepoints expect a block of kNumSafepointRegisters values on the stack, so |
| 4156 // adjust the stack for unsaved registers. | 4156 // adjust the stack for unsaved registers. |
| 4157 const int num_unsaved = kNumSafepointRegisters - kNumSafepointSavedRegisters; | 4157 const int num_unsaved = kNumSafepointRegisters - kNumSafepointSavedRegisters; |
| 4158 ASSERT(num_unsaved >= 0); | 4158 ASSERT(num_unsaved >= 0); |
| 4159 Claim(num_unsaved); | 4159 Claim(num_unsaved); |
| 4160 PushXRegList(kSafepointSavedRegisters); | 4160 PushXRegList(kSafepointSavedRegisters); |
| 4161 } | 4161 } |
| 4162 | 4162 |
| 4163 | 4163 |
| 4164 void MacroAssembler::PushSafepointFPRegisters() { | 4164 void MacroAssembler::PushSafepointRegistersAndDoubles() { |
| 4165 PushSafepointRegisters(); |
| 4165 PushCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSizeInBits, | 4166 PushCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSizeInBits, |
| 4166 FPRegister::kAllocatableFPRegisters)); | 4167 FPRegister::kAllocatableFPRegisters)); |
| 4167 } | 4168 } |
| 4168 | 4169 |
| 4169 | 4170 |
| 4170 void MacroAssembler::PopSafepointFPRegisters() { | 4171 void MacroAssembler::PopSafepointRegistersAndDoubles() { |
| 4171 PopCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSizeInBits, | 4172 PopCPURegList(CPURegList(CPURegister::kFPRegister, kDRegSizeInBits, |
| 4172 FPRegister::kAllocatableFPRegisters)); | 4173 FPRegister::kAllocatableFPRegisters)); |
| 4174 PopSafepointRegisters(); |
| 4173 } | 4175 } |
| 4174 | 4176 |
| 4175 | 4177 |
| 4176 int MacroAssembler::SafepointRegisterStackIndex(int reg_code) { | 4178 int MacroAssembler::SafepointRegisterStackIndex(int reg_code) { |
| 4177 // Make sure the safepoint registers list is what we expect. | 4179 // Make sure the safepoint registers list is what we expect. |
| 4178 ASSERT(CPURegList::GetSafepointSavedRegisters().list() == 0x6ffcffff); | 4180 ASSERT(CPURegList::GetSafepointSavedRegisters().list() == 0x6ffcffff); |
| 4179 | 4181 |
| 4180 // Safepoint registers are stored contiguously on the stack, but not all the | 4182 // Safepoint registers are stored contiguously on the stack, but not all the |
| 4181 // registers are saved. The following registers are excluded: | 4183 // registers are saved. The following registers are excluded: |
| 4182 // - x16 and x17 (ip0 and ip1) because they shouldn't be preserved outside of | 4184 // - x16 and x17 (ip0 and ip1) because they shouldn't be preserved outside of |
| (...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5111 | 5113 |
| 5112 CPURegister UseScratchRegisterScope::AcquireNextAvailable( | 5114 CPURegister UseScratchRegisterScope::AcquireNextAvailable( |
| 5113 CPURegList* available) { | 5115 CPURegList* available) { |
| 5114 CHECK(!available->IsEmpty()); | 5116 CHECK(!available->IsEmpty()); |
| 5115 CPURegister result = available->PopLowestIndex(); | 5117 CPURegister result = available->PopLowestIndex(); |
| 5116 ASSERT(!AreAliased(result, xzr, csp)); | 5118 ASSERT(!AreAliased(result, xzr, csp)); |
| 5117 return result; | 5119 return result; |
| 5118 } | 5120 } |
| 5119 | 5121 |
| 5120 | 5122 |
| 5123 CPURegister UseScratchRegisterScope::UnsafeAcquire(CPURegList* available, |
| 5124 const CPURegister& reg) { |
| 5125 ASSERT(available->IncludesAliasOf(reg)); |
| 5126 available->Remove(reg); |
| 5127 return reg; |
| 5128 } |
| 5129 |
| 5130 |
| 5121 #define __ masm-> | 5131 #define __ masm-> |
| 5122 | 5132 |
| 5123 | 5133 |
| 5124 void InlineSmiCheckInfo::Emit(MacroAssembler* masm, const Register& reg, | 5134 void InlineSmiCheckInfo::Emit(MacroAssembler* masm, const Register& reg, |
| 5125 const Label* smi_check) { | 5135 const Label* smi_check) { |
| 5126 Assembler::BlockPoolsScope scope(masm); | 5136 Assembler::BlockPoolsScope scope(masm); |
| 5127 if (reg.IsValid()) { | 5137 if (reg.IsValid()) { |
| 5128 ASSERT(smi_check->is_bound()); | 5138 ASSERT(smi_check->is_bound()); |
| 5129 ASSERT(reg.Is64Bits()); | 5139 ASSERT(reg.Is64Bits()); |
| 5130 | 5140 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5162 } | 5172 } |
| 5163 } | 5173 } |
| 5164 | 5174 |
| 5165 | 5175 |
| 5166 #undef __ | 5176 #undef __ |
| 5167 | 5177 |
| 5168 | 5178 |
| 5169 } } // namespace v8::internal | 5179 } } // namespace v8::internal |
| 5170 | 5180 |
| 5171 #endif // V8_TARGET_ARCH_ARM64 | 5181 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |