| 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_IA32 |    5 #if V8_TARGET_ARCH_IA32 | 
|    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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  184     CallInterfaceDescriptorData* data) { |  184     CallInterfaceDescriptorData* data) { | 
|  185   Register registers[] = {edi, edx, ebx}; |  185   Register registers[] = {edi, edx, ebx}; | 
|  186   data->InitializePlatformSpecific(arraysize(registers), registers); |  186   data->InitializePlatformSpecific(arraysize(registers), registers); | 
|  187 } |  187 } | 
|  188  |  188  | 
|  189  |  189  | 
|  190 void CallConstructDescriptor::InitializePlatformSpecific( |  190 void CallConstructDescriptor::InitializePlatformSpecific( | 
|  191     CallInterfaceDescriptorData* data) { |  191     CallInterfaceDescriptorData* data) { | 
|  192   // eax : number of arguments |  192   // eax : number of arguments | 
|  193   // ebx : feedback vector |  193   // ebx : feedback vector | 
|  194   // ecx : original constructor (for IsSuperConstructorCall) |  194   // ecx : new target (for IsSuperConstructorCall) | 
|  195   // edx : slot in feedback vector (Smi, for RecordCallTarget) |  195   // edx : slot in feedback vector (Smi, for RecordCallTarget) | 
|  196   // edi : constructor function |  196   // edi : constructor function | 
|  197   // TODO(turbofan): So far we don't gather type feedback and hence skip the |  197   // TODO(turbofan): So far we don't gather type feedback and hence skip the | 
|  198   // slot parameter, but ArrayConstructStub needs the vector to be undefined. |  198   // slot parameter, but ArrayConstructStub needs the vector to be undefined. | 
|  199   Register registers[] = {eax, edi, ecx, ebx}; |  199   Register registers[] = {eax, edi, ecx, ebx}; | 
|  200   data->InitializePlatformSpecific(arraysize(registers), registers, NULL); |  200   data->InitializePlatformSpecific(arraysize(registers), registers, NULL); | 
|  201 } |  201 } | 
|  202  |  202  | 
|  203  |  203  | 
|  204 void CallTrampolineDescriptor::InitializePlatformSpecific( |  204 void CallTrampolineDescriptor::InitializePlatformSpecific( | 
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  409       edi   // the target callable to be call |  409       edi   // the target callable to be call | 
|  410   }; |  410   }; | 
|  411   data->InitializePlatformSpecific(arraysize(registers), registers); |  411   data->InitializePlatformSpecific(arraysize(registers), registers); | 
|  412 } |  412 } | 
|  413  |  413  | 
|  414  |  414  | 
|  415 void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( |  415 void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( | 
|  416     CallInterfaceDescriptorData* data) { |  416     CallInterfaceDescriptorData* data) { | 
|  417   Register registers[] = { |  417   Register registers[] = { | 
|  418       eax,  // argument count (not including receiver) |  418       eax,  // argument count (not including receiver) | 
|  419       edx,  // original constructor |  419       edx,  // new target | 
|  420       edi,  // constructor |  420       edi,  // constructor | 
|  421       ebx,  // address of first argument |  421       ebx,  // address of first argument | 
|  422   }; |  422   }; | 
|  423   data->InitializePlatformSpecific(arraysize(registers), registers); |  423   data->InitializePlatformSpecific(arraysize(registers), registers); | 
|  424 } |  424 } | 
|  425  |  425  | 
|  426  |  426  | 
|  427 void InterpreterCEntryDescriptor::InitializePlatformSpecific( |  427 void InterpreterCEntryDescriptor::InitializePlatformSpecific( | 
|  428     CallInterfaceDescriptorData* data) { |  428     CallInterfaceDescriptorData* data) { | 
|  429   Register registers[] = { |  429   Register registers[] = { | 
|  430       eax,  // argument count (argc) |  430       eax,  // argument count (argc) | 
|  431       ecx,  // address of first argument (argv) |  431       ecx,  // address of first argument (argv) | 
|  432       ebx   // the runtime function to call |  432       ebx   // the runtime function to call | 
|  433   }; |  433   }; | 
|  434   data->InitializePlatformSpecific(arraysize(registers), registers); |  434   data->InitializePlatformSpecific(arraysize(registers), registers); | 
|  435 } |  435 } | 
|  436  |  436  | 
|  437 }  // namespace internal |  437 }  // namespace internal | 
|  438 }  // namespace v8 |  438 }  // namespace v8 | 
|  439  |  439  | 
|  440 #endif  // V8_TARGET_ARCH_IA32 |  440 #endif  // V8_TARGET_ARCH_IA32 | 
| OLD | NEW |