| 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 179     CallInterfaceDescriptorData* data) { | 179     CallInterfaceDescriptorData* data) { | 
| 180   Register registers[] = {rdi, rdx, rbx}; | 180   Register registers[] = {rdi, rdx, rbx}; | 
| 181   data->InitializePlatformSpecific(arraysize(registers), registers); | 181   data->InitializePlatformSpecific(arraysize(registers), registers); | 
| 182 } | 182 } | 
| 183 | 183 | 
| 184 | 184 | 
| 185 void CallConstructDescriptor::InitializePlatformSpecific( | 185 void CallConstructDescriptor::InitializePlatformSpecific( | 
| 186     CallInterfaceDescriptorData* data) { | 186     CallInterfaceDescriptorData* data) { | 
| 187   // rax : number of arguments | 187   // rax : number of arguments | 
| 188   // rbx : feedback vector | 188   // rbx : feedback vector | 
| 189   // rcx : original constructor (for IsSuperConstructorCall) | 189   // rcx : new target (for IsSuperConstructorCall) | 
| 190   // rdx : slot in feedback vector (Smi, for RecordCallTarget) | 190   // rdx : slot in feedback vector (Smi, for RecordCallTarget) | 
| 191   // rdi : constructor function | 191   // rdi : constructor function | 
| 192   // TODO(turbofan): So far we don't gather type feedback and hence skip the | 192   // TODO(turbofan): So far we don't gather type feedback and hence skip the | 
| 193   // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 193   // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 
| 194   Register registers[] = {rax, rdi, rcx, rbx}; | 194   Register registers[] = {rax, rdi, rcx, rbx}; | 
| 195   data->InitializePlatformSpecific(arraysize(registers), registers); | 195   data->InitializePlatformSpecific(arraysize(registers), registers); | 
| 196 } | 196 } | 
| 197 | 197 | 
| 198 | 198 | 
| 199 void CallTrampolineDescriptor::InitializePlatformSpecific( | 199 void CallTrampolineDescriptor::InitializePlatformSpecific( | 
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 403       rdi   // the target callable to be call | 403       rdi   // the target callable to be call | 
| 404   }; | 404   }; | 
| 405   data->InitializePlatformSpecific(arraysize(registers), registers); | 405   data->InitializePlatformSpecific(arraysize(registers), registers); | 
| 406 } | 406 } | 
| 407 | 407 | 
| 408 | 408 | 
| 409 void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( | 409 void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( | 
| 410     CallInterfaceDescriptorData* data) { | 410     CallInterfaceDescriptorData* data) { | 
| 411   Register registers[] = { | 411   Register registers[] = { | 
| 412       rax,  // argument count (not including receiver) | 412       rax,  // argument count (not including receiver) | 
| 413       rdx,  // original constructor | 413       rdx,  // new target | 
| 414       rdi,  // constructor | 414       rdi,  // constructor | 
| 415       rbx,  // address of first argument | 415       rbx,  // address of first argument | 
| 416   }; | 416   }; | 
| 417   data->InitializePlatformSpecific(arraysize(registers), registers); | 417   data->InitializePlatformSpecific(arraysize(registers), registers); | 
| 418 } | 418 } | 
| 419 | 419 | 
| 420 | 420 | 
| 421 void InterpreterCEntryDescriptor::InitializePlatformSpecific( | 421 void InterpreterCEntryDescriptor::InitializePlatformSpecific( | 
| 422     CallInterfaceDescriptorData* data) { | 422     CallInterfaceDescriptorData* data) { | 
| 423   Register registers[] = { | 423   Register registers[] = { | 
| 424       rax,  // argument count (argc) | 424       rax,  // argument count (argc) | 
| 425       r15,  // address of first argument (argv) | 425       r15,  // address of first argument (argv) | 
| 426       rbx   // the runtime function to call | 426       rbx   // the runtime function to call | 
| 427   }; | 427   }; | 
| 428   data->InitializePlatformSpecific(arraysize(registers), registers); | 428   data->InitializePlatformSpecific(arraysize(registers), registers); | 
| 429 } | 429 } | 
| 430 | 430 | 
| 431 }  // namespace internal | 431 }  // namespace internal | 
| 432 }  // namespace v8 | 432 }  // namespace v8 | 
| 433 | 433 | 
| 434 #endif  // V8_TARGET_ARCH_X64 | 434 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|