summaryrefslogtreecommitdiff
path: root/chromium/v8/src/interface-descriptors.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/interface-descriptors.h')
-rw-r--r--chromium/v8/src/interface-descriptors.h149
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