diff options
Diffstat (limited to 'deps/v8/src/interface-descriptors.cc')
-rw-r--r-- | deps/v8/src/interface-descriptors.cc | 124 |
1 files changed, 81 insertions, 43 deletions
diff --git a/deps/v8/src/interface-descriptors.cc b/deps/v8/src/interface-descriptors.cc index 297722c255..94ed7020c3 100644 --- a/deps/v8/src/interface-descriptors.cc +++ b/deps/v8/src/interface-descriptors.cc @@ -81,6 +81,12 @@ void AllocateMutableHeapNumberDescriptor::InitializePlatformSpecific( } +void VoidDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + data->InitializePlatformSpecific(0, nullptr); +} + + Type::FunctionType* LoadDescriptor::BuildCallInterfaceDescriptorFunctionType( Isolate* isolate, int paramater_count) { Zone* zone = isolate->interface_descriptor_zone(); @@ -92,6 +98,7 @@ Type::FunctionType* LoadDescriptor::BuildCallInterfaceDescriptorFunctionType( return function; } + void LoadDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()}; @@ -363,6 +370,27 @@ void ArgumentsAccessNewDescriptor::InitializePlatformSpecific( } +Type::FunctionType* +RestParamAccessDescriptor::BuildCallInterfaceDescriptorFunctionType( + Isolate* isolate, int paramater_count) { + Zone* zone = isolate->interface_descriptor_zone(); + Type::FunctionType* function = + Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 3, zone); + function->InitParameter(0, SmiType(zone)); + function->InitParameter(1, ExternalPointer(zone)); + function->InitParameter(2, SmiType(zone)); + return function; +} + + +void RestParamAccessDescriptor::InitializePlatformSpecific( + CallInterfaceDescriptorData* data) { + Register registers[] = {parameter_count(), parameter_pointer(), + rest_parameter_index()}; + data->InitializePlatformSpecific(arraysize(registers), registers); +} + + void ContextOnlyDescriptor::InitializePlatformSpecific( CallInterfaceDescriptorData* data) { data->InitializePlatformSpecific(0, nullptr); @@ -377,6 +405,20 @@ void GrowArrayElementsDescriptor::InitializePlatformSpecific( Type::FunctionType* +FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType( + Isolate* isolate, int paramater_count) { + Zone* zone = isolate->interface_descriptor_zone(); + Type::FunctionType* function = + Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 4, zone); + function->InitParameter(0, AnyTagged(zone)); // closure + function->InitParameter(1, SmiType(zone)); // literal_index + function->InitParameter(2, AnyTagged(zone)); // pattern + function->InitParameter(3, AnyTagged(zone)); // flags + return function; +} + + +Type::FunctionType* FastCloneShallowArrayDescriptor::BuildCallInterfaceDescriptorFunctionType( Isolate* isolate, int paramater_count) { Zone* zone = isolate->interface_descriptor_zone(); @@ -420,9 +462,35 @@ CallTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( Zone* zone = isolate->interface_descriptor_zone(); Type::FunctionType* function = Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 2, zone); - function->InitParameter(0, AnyTagged(zone)); // target - function->InitParameter( - 1, UntaggedIntegral32(zone)); // actual number of arguments + function->InitParameter(0, AnyTagged(zone)); // target + function->InitParameter(1, UntaggedIntegral32(zone)); // actual #arguments + return function; +} + + +Type::FunctionType* +ConstructStubDescriptor::BuildCallInterfaceDescriptorFunctionType( + Isolate* isolate, int paramater_count) { + Zone* zone = isolate->interface_descriptor_zone(); + Type::FunctionType* function = + Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 4, zone); + function->InitParameter(0, AnyTagged(zone)); // target + function->InitParameter(1, AnyTagged(zone)); // new.target + function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments + function->InitParameter(3, AnyTagged(zone)); // opt. allocation site + return function; +} + + +Type::FunctionType* +ConstructTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( + Isolate* isolate, int paramater_count) { + Zone* zone = isolate->interface_descriptor_zone(); + Type::FunctionType* function = + Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 3, zone); + function->InitParameter(0, AnyTagged(zone)); // target + function->InitParameter(1, AnyTagged(zone)); // new.target + function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments return function; } @@ -482,13 +550,11 @@ ArgumentAdaptorDescriptor::BuildCallInterfaceDescriptorFunctionType( Isolate* isolate, int paramater_count) { Zone* zone = isolate->interface_descriptor_zone(); Type::FunctionType* function = - Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 3, zone); - function->InitParameter(0, Type::Receiver()); // JSFunction - function->InitParameter( - 1, UntaggedIntegral32(zone)); // actual number of arguments - function->InitParameter( - 2, - UntaggedIntegral32(zone)); // expected number of arguments + Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 4, zone); + function->InitParameter(0, Type::Receiver()); // JSFunction + function->InitParameter(1, AnyTagged(zone)); // the new target + function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments + function->InitParameter(3, UntaggedIntegral32(zone)); // expected #arguments return function; } @@ -499,12 +565,11 @@ ApiFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType( Zone* zone = isolate->interface_descriptor_zone(); Type::FunctionType* function = Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 5, zone); - 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 number of arguments + 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; } @@ -523,32 +588,5 @@ ApiAccessorDescriptor::BuildCallInterfaceDescriptorFunctionType( } -Type::FunctionType* MathRoundVariantCallFromUnoptimizedCodeDescriptor:: - BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, - int paramater_count) { - Zone* zone = isolate->interface_descriptor_zone(); - Type::FunctionType* function = - Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 4, zone); - function->InitParameter(0, Type::Receiver()); - function->InitParameter(1, SmiType(zone)); - function->InitParameter(2, AnyTagged(zone)); - function->InitParameter(3, AnyTagged(zone)); - return function; -} - - -Type::FunctionType* MathRoundVariantCallFromOptimizedCodeDescriptor:: - BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, - int paramater_count) { - Zone* zone = isolate->interface_descriptor_zone(); - Type::FunctionType* function = - Type::FunctionType::New(AnyTagged(zone), Type::Undefined(), 5, zone); - function->InitParameter(0, Type::Receiver()); - function->InitParameter(1, SmiType(zone)); - function->InitParameter(2, AnyTagged(zone)); - function->InitParameter(3, AnyTagged(zone)); - function->InitParameter(4, AnyTagged(zone)); - return function; -} } // namespace internal } // namespace v8 |