5#ifndef V8_BUILTINS_BUILTINS_DESCRIPTORS_H_
6#define V8_BUILTINS_BUILTINS_DESCRIPTORS_H_
15#ifdef V8_JS_LINKAGE_INCLUDES_DISPATCH_HANDLE
16#define DEFINE_TFJ_PARAMETER_INDICES(...) \
17 enum ParameterIndices { \
18 kJSTarget = kJSCallClosureParameterIndex, \
21 kJSActualArgumentsCount, \
28#define DEFINE_TFJ_PARAMETER_INDICES(...) \
29 enum ParameterIndices { \
30 kJSTarget = kJSCallClosureParameterIndex, \
33 kJSActualArgumentsCount, \
41#define DEFINE_TFJ_INTERFACE_DESCRIPTOR(Name, Argc, ...) \
42 struct Builtin_##Name##_InterfaceDescriptor { \
43 DEFINE_TFJ_PARAMETER_INDICES(__VA_ARGS__) \
44 static_assert(kParameterCount == kJSBuiltinBaseParameterCount + (Argc)); \
45 static_assert((Argc) == \
46 static_cast<uint16_t>(kParameterCount - \
47 kJSBuiltinBaseParameterCount), \
48 "Inconsistent set of arguments"); \
49 static_assert(kParameterCount - (Argc) == \
50 JSTrampolineDescriptor::kParameterCount, \
51 "Interface descriptors for JS builtins must be compatible " \
52 "with the general JS calling convention"); \
53 static_assert(kJSTarget == -1, "Unexpected kJSTarget index value"); \
56#define DEFINE_TSJ_INTERFACE_DESCRIPTOR(...) \
57 DEFINE_TFJ_INTERFACE_DESCRIPTOR(__VA_ARGS__)
59#define DEFINE_TSC_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor) \
60 using Builtin_##Name##_InterfaceDescriptor = InterfaceDescriptor##Descriptor;
63#define DEFINE_TFC_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor) \
64 using Builtin_##Name##_InterfaceDescriptor = InterfaceDescriptor##Descriptor;
66#define DEFINE_TFS_INTERFACE_DESCRIPTOR(Name, ...) \
67 using Builtin_##Name##_InterfaceDescriptor = Name##Descriptor;
70#define DEFINE_TFH_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor) \
71 using Builtin_##Name##_InterfaceDescriptor = InterfaceDescriptor##Descriptor;
73#define DEFINE_ASM_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor) \
74 using Builtin_##Name##_InterfaceDescriptor = InterfaceDescriptor##Descriptor;
82#undef DEFINE_TFJ_INTERFACE_DESCRIPTOR
83#undef DEFINE_TSJ_INTERFACE_DESCRIPTOR
84#undef DEFINE_TSC_INTERFACE_DESCRIPTOR
85#undef DEFINE_TFC_INTERFACE_DESCRIPTOR
86#undef DEFINE_TFS_INTERFACE_DESCRIPTOR
87#undef DEFINE_TFH_INTERFACE_DESCRIPTOR
88#undef DEFINE_ASM_INTERFACE_DESCRIPTOR
#define IGNORE_BUILTIN(...)
#define DEFINE_ASM_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor)
#define DEFINE_TSJ_INTERFACE_DESCRIPTOR(...)
#define DEFINE_TFS_INTERFACE_DESCRIPTOR(Name,...)
#define DEFINE_TFC_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor)
#define DEFINE_TFH_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor)
#define DEFINE_TSC_INTERFACE_DESCRIPTOR(Name, InterfaceDescriptor)
#define DEFINE_TFJ_INTERFACE_DESCRIPTOR(Name, Argc,...)
constexpr size_t kJSBuiltinBaseParameterCount