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 |