diff options
Diffstat (limited to 'deps/v8/src/arm/interface-descriptors-arm.cc')
-rw-r--r-- | deps/v8/src/arm/interface-descriptors-arm.cc | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/deps/v8/src/arm/interface-descriptors-arm.cc b/deps/v8/src/arm/interface-descriptors-arm.cc index 963b77782a..b7fad7bee6 100644 --- a/deps/v8/src/arm/interface-descriptors-arm.cc +++ b/deps/v8/src/arm/interface-descriptors-arm.cc @@ -65,6 +65,11 @@ const Register ArgumentsAccessNewDescriptor::parameter_count() { return r2; } const Register ArgumentsAccessNewDescriptor::parameter_pointer() { return r3; } +const Register RestParamAccessDescriptor::parameter_count() { return r2; } +const Register RestParamAccessDescriptor::parameter_pointer() { return r3; } +const Register RestParamAccessDescriptor::rest_parameter_index() { return r4; } + + const Register ApiGetterDescriptor::function_address() { return r2; } @@ -127,6 +132,13 @@ void TypeofDescriptor::InitializePlatformSpecific( } +void FastCloneRegExpDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + Register registers[] = {r3, r2, r1, r0}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + + void FastCloneShallowArrayDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = {r3, r2, r1}; @@ -189,7 +201,7 @@ void CallConstructDescriptor::InitializePlatformSpecific( // r1 : the function to call // r2 : feedback vector // r3 : slot in feedback vector (Smi, for RecordCallTarget) - // r4 : original constructor (for IsSuperConstructorCall) + // r4 : new target (for IsSuperConstructorCall) // TODO(turbofan): So far we don't gather type feedback and hence skip the // slot parameter, but ArrayConstructStub needs the vector to be undefined. Register registers[] = {r0, r1, r4, r2}; @@ -206,6 +218,27 @@ void CallTrampolineDescriptor::InitializePlatformSpecific( } +void ConstructStubDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + // r0 : number of arguments + // r1 : the target to call + // r3 : the new target + // r2 : allocation site or undefined + Register registers[] = {r1, r3, r0, r2}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + + +void ConstructTrampolineDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + // r0 : number of arguments + // r1 : the target to call + // r3 : the new target + Register registers[] = {r1, r3, r0}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + + void RegExpConstructResultDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = {r2, r1, r0}; @@ -358,6 +391,7 @@ void ArgumentAdaptorDescriptor::InitializePlatformSpecific( Register registers[] = { r1, // JSFunction + r3, // the new target r0, // actual number of arguments r2, // expected number of arguments }; @@ -399,27 +433,6 @@ void ApiAccessorDescriptor::InitializePlatformSpecific( } -void MathRoundVariantCallFromUnoptimizedCodeDescriptor:: - InitializePlatformSpecific(CallInterfaceDescriptorData* data) { - Register registers[] = { - r1, // math rounding function - r3, // vector slot id - }; - data->InitializePlatformSpecific(arraysize(registers), registers); -} - - -void MathRoundVariantCallFromOptimizedCodeDescriptor:: - InitializePlatformSpecific(CallInterfaceDescriptorData* data) { - Register registers[] = { - r1, // math rounding function - r3, // vector slot id - r4, // type vector - }; - data->InitializePlatformSpecific(arraysize(registers), registers); -} - - void InterpreterPushArgsAndCallDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = { @@ -435,7 +448,7 @@ void InterpreterPushArgsAndConstructDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = { r0, // argument count (not including receiver) - r3, // original constructor + r3, // new target r1, // constructor to call r2 // address of the first argument }; |