Upgrade V8 to 5.1.281.57 DO NOT MERGE
FPIIM-449
Change-Id: Id981b686b4d587ac31697662eb98bb34be42ad90
(cherry picked from commit 3b9bc31999c9787eb726ecdbfd5796bfdec32a18)
diff --git a/src/interface-descriptors.cc b/src/interface-descriptors.cc
index cc46a56..9ee4269 100644
--- a/src/interface-descriptors.cc
+++ b/src/interface-descriptors.cc
@@ -197,31 +197,9 @@
data->InitializePlatformSpecific(arraysize(registers), registers);
}
-
-void ToLengthDescriptor::InitializePlatformSpecific(
+void TypeConversionDescriptor::InitializePlatformSpecific(
CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-
-void ToStringDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-
-void ToNameDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister()};
- data->InitializePlatformSpecific(arraysize(registers), registers);
-}
-
-
-void ToObjectDescriptor::InitializePlatformSpecific(
- CallInterfaceDescriptorData* data) {
- Register registers[] = {ReceiverRegister()};
+ Register registers[] = {ArgumentRegister()};
data->InitializePlatformSpecific(arraysize(registers), registers);
}
@@ -352,6 +330,15 @@
data->InitializePlatformSpecific(arraysize(registers), registers);
}
+FunctionType* FastArrayPushDescriptor::BuildCallInterfaceDescriptorFunctionType(
+ Isolate* isolate, int paramater_count) {
+ Zone* zone = isolate->interface_descriptor_zone();
+ FunctionType* function =
+ Type::Function(AnyTagged(zone), AnyTagged(zone), 1, zone)->AsFunction();
+ function->InitParameter(0, UntaggedIntegral32(zone)); // actual #arguments
+ return function;
+}
+
FunctionType*
FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType(
Isolate* isolate, int paramater_count) {
@@ -494,28 +481,45 @@
return function;
}
-FunctionType* ApiFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType(
- Isolate* isolate, int paramater_count) {
- Zone* zone = isolate->interface_descriptor_zone();
- FunctionType* function =
- Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction();
- function->InitParameter(0, AnyTagged(zone)); // callee
- function->InitParameter(1, AnyTagged(zone)); // call_data
- function->InitParameter(2, AnyTagged(zone)); // holder
- function->InitParameter(3, ExternalPointer(zone)); // api_function_address
- function->InitParameter(4, UntaggedIntegral32(zone)); // actual #arguments
- return function;
+CallInterfaceDescriptor ApiCallbackDescriptorBase::ForArgs(Isolate* isolate,
+ int argc) {
+ switch (argc) {
+ case 0:
+ return ApiCallbackWith0ArgsDescriptor(isolate);
+ case 1:
+ return ApiCallbackWith1ArgsDescriptor(isolate);
+ case 2:
+ return ApiCallbackWith2ArgsDescriptor(isolate);
+ case 3:
+ return ApiCallbackWith3ArgsDescriptor(isolate);
+ case 4:
+ return ApiCallbackWith4ArgsDescriptor(isolate);
+ case 5:
+ return ApiCallbackWith5ArgsDescriptor(isolate);
+ case 6:
+ return ApiCallbackWith6ArgsDescriptor(isolate);
+ case 7:
+ return ApiCallbackWith7ArgsDescriptor(isolate);
+ default:
+ UNREACHABLE();
+ return VoidDescriptor(isolate);
+ }
}
-FunctionType* ApiAccessorDescriptor::BuildCallInterfaceDescriptorFunctionType(
- Isolate* isolate, int paramater_count) {
+FunctionType*
+ApiCallbackDescriptorBase::BuildCallInterfaceDescriptorFunctionTypeWithArg(
+ Isolate* isolate, int parameter_count, int argc) {
Zone* zone = isolate->interface_descriptor_zone();
FunctionType* function =
- Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction();
+ Type::Function(AnyTagged(zone), Type::Undefined(), 4 + argc, zone)
+ ->AsFunction();
function->InitParameter(0, AnyTagged(zone)); // callee
function->InitParameter(1, AnyTagged(zone)); // call_data
function->InitParameter(2, AnyTagged(zone)); // holder
function->InitParameter(3, ExternalPointer(zone)); // api_function_address
+ for (int i = 0; i < argc; i++) {
+ function->InitParameter(i, AnyTagged(zone));
+ }
return function;
}