| 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 |