diff options
Diffstat (limited to 'chromium/v8/src/interface-descriptors.h')
-rw-r--r-- | chromium/v8/src/interface-descriptors.h | 149 |
1 files changed, 110 insertions, 39 deletions
diff --git a/chromium/v8/src/interface-descriptors.h b/chromium/v8/src/interface-descriptors.h index 534313f7d30..2814daeded3 100644 --- a/chromium/v8/src/interface-descriptors.h +++ b/chromium/v8/src/interface-descriptors.h @@ -14,6 +14,7 @@ namespace internal { class PlatformInterfaceDescriptor; #define INTERFACE_DESCRIPTOR_LIST(V) \ + V(Void) \ V(Load) \ V(Store) \ V(StoreTransition) \ @@ -25,10 +26,12 @@ class PlatformInterfaceDescriptor; V(FastNewClosure) \ V(FastNewContext) \ V(ToNumber) \ + V(ToLength) \ V(ToString) \ V(ToObject) \ V(NumberToString) \ V(Typeof) \ + V(FastCloneRegExp) \ V(FastCloneShallowArray) \ V(FastCloneShallowObject) \ V(CreateAllocationSite) \ @@ -38,10 +41,13 @@ class PlatformInterfaceDescriptor; V(CallFunctionWithFeedbackAndVector) \ V(CallConstruct) \ V(CallTrampoline) \ - V(PushArgsAndCall) \ + V(ConstructStub) \ + V(ConstructTrampoline) \ V(RegExpConstructResult) \ V(TransitionElementsKind) \ V(AllocateHeapNumber) \ + V(AllocateMutableHeapNumber) \ + V(AllocateInNewSpace) \ V(ArrayConstructorConstantArgCount) \ V(ArrayConstructor) \ V(InternalArrayConstructorConstantArgCount) \ @@ -62,6 +68,7 @@ class PlatformInterfaceDescriptor; V(ApiGetter) \ V(ArgumentsAccessRead) \ V(ArgumentsAccessNew) \ + V(RestParamAccess) \ V(StoreArrayLiteralElement) \ V(LoadGlobalViaContext) \ V(StoreGlobalViaContext) \ @@ -69,8 +76,9 @@ class PlatformInterfaceDescriptor; V(MathPowInteger) \ V(ContextOnly) \ V(GrowArrayElements) \ - V(MathRoundVariantCallFromUnoptimizedCode) \ - V(MathRoundVariantCallFromOptimizedCode) + V(InterpreterPushArgsAndCall) \ + V(InterpreterPushArgsAndConstruct) \ + V(InterpreterCEntry) class CallInterfaceDescriptorData { @@ -219,13 +227,21 @@ class CallInterfaceDescriptor { static inline CallDescriptors::Key key(); -#define DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(name, base) \ - DECLARE_DESCRIPTOR(name, base) \ - protected: \ - virtual Type::FunctionType* BuildCallInterfaceDescriptorFunctionType( \ - Isolate* isolate, int register_param_count) override; \ - \ +#define DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(name, base) \ + DECLARE_DESCRIPTOR(name, base) \ + protected: \ + Type::FunctionType* BuildCallInterfaceDescriptorFunctionType( \ + Isolate* isolate, int register_param_count) override; \ + \ public: + + +class VoidDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(VoidDescriptor, CallInterfaceDescriptor) +}; + + // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs. class LoadDescriptor : public CallInterfaceDescriptor { public: @@ -280,19 +296,21 @@ class VectorStoreTransitionDescriptor : public StoreDescriptor { // Extends StoreDescriptor with Map parameter. enum ParameterIndices { - kReceiverIndex, - kNameIndex, - kValueIndex, - kSlotIndex, - kVectorIndex, - kMapIndex, - kParameterCount + kReceiverIndex = 0, + kNameIndex = 1, + kValueIndex = 2, + + kMapIndex = 3, + + kSlotIndex = 4, // not present on ia32. + kVirtualSlotVectorIndex = 4, + + kVectorIndex = 5 }; - // These registers are no_reg for ia32, using the stack instead. + static const Register MapRegister(); static const Register SlotRegister(); static const Register VectorRegister(); - static const Register MapRegister(); }; @@ -368,6 +386,16 @@ class ToNumberDescriptor : public CallInterfaceDescriptor { }; +class ToLengthDescriptor : public CallInterfaceDescriptor { + public: + enum ParameterIndices { kReceiverIndex }; + + DECLARE_DESCRIPTOR(ToLengthDescriptor, CallInterfaceDescriptor) + + static const Register ReceiverRegister(); +}; + + class ToStringDescriptor : public CallInterfaceDescriptor { public: enum ParameterIndices { kReceiverIndex }; @@ -400,6 +428,13 @@ class TypeofDescriptor : public CallInterfaceDescriptor { }; +class FastCloneRegExpDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneRegExpDescriptor, + CallInterfaceDescriptor) +}; + + class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor { public: DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneShallowArrayDescriptor, @@ -441,6 +476,20 @@ class CallTrampolineDescriptor : public CallInterfaceDescriptor { }; +class ConstructStubDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructStubDescriptor, + CallInterfaceDescriptor) +}; + + +class ConstructTrampolineDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructTrampolineDescriptor, + CallInterfaceDescriptor) +}; + + class CallFunctionDescriptor : public CallInterfaceDescriptor { public: DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor) @@ -505,6 +554,19 @@ class AllocateHeapNumberDescriptor : public CallInterfaceDescriptor { }; +class AllocateMutableHeapNumberDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(AllocateMutableHeapNumberDescriptor, + CallInterfaceDescriptor) +}; + + +class AllocateInNewSpaceDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(AllocateInNewSpaceDescriptor, CallInterfaceDescriptor) +}; + + class ArrayConstructorConstantArgCountDescriptor : public CallInterfaceDescriptor { public: @@ -650,6 +712,16 @@ class ArgumentsAccessNewDescriptor : public CallInterfaceDescriptor { }; +class RestParamAccessDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(RestParamAccessDescriptor, + CallInterfaceDescriptor) + static const Register parameter_count(); + static const Register parameter_pointer(); + static const Register rest_parameter_index(); +}; + + class StoreArrayLiteralElementDescriptor : public CallInterfaceDescriptor { public: DECLARE_DESCRIPTOR(StoreArrayLiteralElementDescriptor, @@ -673,23 +745,6 @@ class MathPowIntegerDescriptor : public CallInterfaceDescriptor { }; -class MathRoundVariantCallFromOptimizedCodeDescriptor - : public CallInterfaceDescriptor { - public: - DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( - MathRoundVariantCallFromOptimizedCodeDescriptor, CallInterfaceDescriptor) -}; - - -class MathRoundVariantCallFromUnoptimizedCodeDescriptor - : public CallInterfaceDescriptor { - public: - DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( - MathRoundVariantCallFromUnoptimizedCodeDescriptor, - CallInterfaceDescriptor) -}; - - class ContextOnlyDescriptor : public CallInterfaceDescriptor { public: DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor) @@ -706,11 +761,27 @@ class GrowArrayElementsDescriptor : public CallInterfaceDescriptor { }; -class PushArgsAndCallDescriptor : public CallInterfaceDescriptor { +class InterpreterPushArgsAndCallDescriptor : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(InterpreterPushArgsAndCallDescriptor, + CallInterfaceDescriptor) +}; + + +class InterpreterPushArgsAndConstructDescriptor + : public CallInterfaceDescriptor { + public: + DECLARE_DESCRIPTOR(InterpreterPushArgsAndConstructDescriptor, + CallInterfaceDescriptor) +}; + + +class InterpreterCEntryDescriptor : public CallInterfaceDescriptor { public: - DECLARE_DESCRIPTOR(PushArgsAndCallDescriptor, CallInterfaceDescriptor) + DECLARE_DESCRIPTOR(InterpreterCEntryDescriptor, CallInterfaceDescriptor) }; + #undef DECLARE_DESCRIPTOR @@ -720,8 +791,8 @@ class PushArgsAndCallDescriptor : public CallInterfaceDescriptor { CallDescriptors::Key name##Descriptor::key() { return CallDescriptors::name; } INTERFACE_DESCRIPTOR_LIST(DEF_KEY) #undef DEF_KEY -} -} // namespace v8::internal +} // namespace internal +} // namespace v8 #if V8_TARGET_ARCH_ARM64 |