summaryrefslogtreecommitdiff
path: root/deps/v8/src/arm/interface-descriptors-arm.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/arm/interface-descriptors-arm.cc')
-rw-r--r--deps/v8/src/arm/interface-descriptors-arm.cc59
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
};