| Index: src/interface-descriptors.h
|
| diff --git a/src/interface-descriptors.h b/src/interface-descriptors.h
|
| index 986df2caf9877fd7d6c816b68fc3554a18897cc3..23d35d840fd3dadcce07d506f61120149d33f882 100644
|
| --- a/src/interface-descriptors.h
|
| +++ b/src/interface-descriptors.h
|
| @@ -15,6 +15,14 @@ class PlatformInterfaceDescriptor;
|
|
|
| #define INTERFACE_DESCRIPTOR_LIST(V) \
|
| V(Void) \
|
| + V(ContextOnly) \
|
| + V(OnStackWith1Args) \
|
| + V(OnStackWith2Args) \
|
| + V(OnStackWith3Args) \
|
| + V(OnStackWith4Args) \
|
| + V(OnStackWith5Args) \
|
| + V(OnStackWith6Args) \
|
| + V(OnStackWith7Args) \
|
| V(Load) \
|
| V(LoadGlobal) \
|
| V(LoadGlobalWithVector) \
|
| @@ -84,7 +92,6 @@ class PlatformInterfaceDescriptor;
|
| V(StoreGlobalViaContext) \
|
| V(MathPowTagged) \
|
| V(MathPowInteger) \
|
| - V(ContextOnly) \
|
| V(GrowArrayElements) \
|
| V(InterpreterDispatch) \
|
| V(InterpreterPushArgsAndCall) \
|
| @@ -278,6 +285,77 @@ class VoidDescriptor : public CallInterfaceDescriptor {
|
| DECLARE_DESCRIPTOR(VoidDescriptor, CallInterfaceDescriptor)
|
| };
|
|
|
| +class ContextOnlyDescriptor : public CallInterfaceDescriptor {
|
| + public:
|
| + DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor)
|
| +};
|
| +
|
| +// The OnStackWith*ArgsDescriptors have a lot of boilerplate. The superclass
|
| +// OnStackArgsDescriptorBase is not meant to be instantiated directly and has no
|
| +// public constructors to ensure this is so.contains all the logic, and the
|
| +//
|
| +// Use OnStackArgsDescriptorBase::ForArgs(isolate, parameter_count) to
|
| +// instantiate a descriptor with the number of args.
|
| +class OnStackArgsDescriptorBase : public CallInterfaceDescriptor {
|
| + public:
|
| + static CallInterfaceDescriptor ForArgs(Isolate* isolate, int parameter_count);
|
| +
|
| + protected:
|
| + OnStackArgsDescriptorBase(Isolate* isolate, CallDescriptors::Key key)
|
| + : CallInterfaceDescriptor(isolate, key) {}
|
| + void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override;
|
| + FunctionType* BuildCallInterfaceDescriptorFunctionTypeWithArg(
|
| + Isolate* isolate, int register_parameter_count, int parameter_count);
|
| +};
|
| +
|
| +class OnStackWith1ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith1ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 1)
|
| +};
|
| +
|
| +class OnStackWith2ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith2ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 2)
|
| +};
|
| +
|
| +class OnStackWith3ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith3ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 3)
|
| +};
|
| +
|
| +class OnStackWith4ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith4ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 4)
|
| +};
|
| +
|
| +class OnStackWith5ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith5ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 5)
|
| +};
|
| +
|
| +class OnStackWith6ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith6ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 6)
|
| +};
|
| +
|
| +class OnStackWith7ArgsDescriptor : public OnStackArgsDescriptorBase {
|
| + public:
|
| + DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith7ArgsDescriptor,
|
| + OnStackArgsDescriptorBase,
|
| + 7)
|
| +};
|
|
|
| // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs.
|
| class LoadDescriptor : public CallInterfaceDescriptor {
|
| @@ -774,7 +852,6 @@ class ApiGetterDescriptor : public CallInterfaceDescriptor {
|
| static const Register CallbackRegister();
|
| };
|
|
|
| -
|
| class MathPowTaggedDescriptor : public CallInterfaceDescriptor {
|
| public:
|
| DECLARE_DESCRIPTOR(MathPowTaggedDescriptor, CallInterfaceDescriptor)
|
| @@ -782,7 +859,6 @@ class MathPowTaggedDescriptor : public CallInterfaceDescriptor {
|
| static const Register exponent();
|
| };
|
|
|
| -
|
| class MathPowIntegerDescriptor : public CallInterfaceDescriptor {
|
| public:
|
| DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor)
|
| @@ -790,12 +866,6 @@ class MathPowIntegerDescriptor : public CallInterfaceDescriptor {
|
| static const Register exponent();
|
| };
|
|
|
| -
|
| -class ContextOnlyDescriptor : public CallInterfaceDescriptor {
|
| - public:
|
| - DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor)
|
| -};
|
| -
|
| class VarArgFunctionDescriptor : public CallInterfaceDescriptor {
|
| public:
|
| DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(VarArgFunctionDescriptor,
|
|
|