OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 |
6 | 6 |
7 #include "src/interface-descriptors.h" | 7 #include "src/interface-descriptors.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 data->InitializePlatformSpecific(arraysize(registers), registers); | 132 data->InitializePlatformSpecific(arraysize(registers), registers); |
133 } | 133 } |
134 | 134 |
135 | 135 |
136 void CallFunctionDescriptor::InitializePlatformSpecific( | 136 void CallFunctionDescriptor::InitializePlatformSpecific( |
137 CallInterfaceDescriptorData* data) { | 137 CallInterfaceDescriptorData* data) { |
138 Register registers[] = {rdi}; | 138 Register registers[] = {rdi}; |
139 data->InitializePlatformSpecific(arraysize(registers), registers); | 139 data->InitializePlatformSpecific(arraysize(registers), registers); |
140 } | 140 } |
141 | 141 |
142 | 142 void CallICTrampolineDescriptor::InitializePlatformSpecific( |
143 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( | |
144 CallInterfaceDescriptorData* data) { | 143 CallInterfaceDescriptorData* data) { |
145 Register registers[] = {rdi, rax, rdx}; | 144 Register registers[] = {rdi, rax, rdx}; |
146 data->InitializePlatformSpecific(arraysize(registers), registers); | 145 data->InitializePlatformSpecific(arraysize(registers), registers); |
147 } | 146 } |
148 | 147 |
149 | 148 void CallICDescriptor::InitializePlatformSpecific( |
150 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( | |
151 CallInterfaceDescriptorData* data) { | 149 CallInterfaceDescriptorData* data) { |
152 Register registers[] = {rdi, rax, rdx, rbx}; | 150 Register registers[] = {rdi, rax, rdx, rbx}; |
153 data->InitializePlatformSpecific(arraysize(registers), registers); | 151 data->InitializePlatformSpecific(arraysize(registers), registers); |
154 } | 152 } |
155 | 153 |
156 | 154 |
157 void CallConstructDescriptor::InitializePlatformSpecific( | 155 void CallConstructDescriptor::InitializePlatformSpecific( |
158 CallInterfaceDescriptorData* data) { | 156 CallInterfaceDescriptorData* data) { |
159 // rax : number of arguments | 157 // rax : number of arguments |
160 // rbx : feedback vector | 158 // rbx : feedback vector |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 } | 215 } |
218 | 216 |
219 #define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \ | 217 #define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \ |
220 void Allocate##Type##Descriptor::InitializePlatformSpecific( \ | 218 void Allocate##Type##Descriptor::InitializePlatformSpecific( \ |
221 CallInterfaceDescriptorData* data) { \ | 219 CallInterfaceDescriptorData* data) { \ |
222 data->InitializePlatformSpecific(0, nullptr, nullptr); \ | 220 data->InitializePlatformSpecific(0, nullptr, nullptr); \ |
223 } | 221 } |
224 SIMD128_TYPES(SIMD128_ALLOC_DESC) | 222 SIMD128_TYPES(SIMD128_ALLOC_DESC) |
225 #undef SIMD128_ALLOC_DESC | 223 #undef SIMD128_ALLOC_DESC |
226 | 224 |
| 225 void ArrayConstructorDescriptor::InitializePlatformSpecific( |
| 226 CallInterfaceDescriptorData* data) { |
| 227 // kTarget, kNewTarget, kActualArgumentsCount, kAllocationSite |
| 228 Register registers[] = {rdi, rdx, rax, rbx}; |
| 229 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); |
| 230 } |
| 231 |
227 void ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific( | 232 void ArrayNoArgumentConstructorDescriptor::InitializePlatformSpecific( |
228 CallInterfaceDescriptorData* data) { | 233 CallInterfaceDescriptorData* data) { |
229 // register state | 234 // register state |
230 // rax -- number of arguments | 235 // rax -- number of arguments |
231 // rdi -- function | 236 // rdi -- function |
232 // rbx -- allocation site with elements kind | 237 // rbx -- allocation site with elements kind |
233 Register registers[] = {rdi, rbx, rax}; | 238 Register registers[] = {rdi, rbx, rax}; |
234 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); | 239 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); |
235 } | 240 } |
236 | 241 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 Register registers[] = { | 425 Register registers[] = { |
421 rbx, // loaded new FP | 426 rbx, // loaded new FP |
422 }; | 427 }; |
423 data->InitializePlatformSpecific(arraysize(registers), registers); | 428 data->InitializePlatformSpecific(arraysize(registers), registers); |
424 } | 429 } |
425 | 430 |
426 } // namespace internal | 431 } // namespace internal |
427 } // namespace v8 | 432 } // namespace v8 |
428 | 433 |
429 #endif // V8_TARGET_ARCH_X64 | 434 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |