v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
interface-descriptors.h File Reference
#include <memory>
#include "src/base/logging.h"
#include "src/codegen/machine-type.h"
#include "src/codegen/register.h"
#include "src/codegen/tnode.h"
#include "src/common/globals.h"
#include "src/execution/isolate.h"
#include "torque-generated/interface-descriptors.inc"
Include dependency graph for interface-descriptors.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::CallInterfaceDescriptorData
 
class  v8::internal::CallDescriptors
 
class  v8::internal::CallInterfaceDescriptor
 
class  v8::internal::StaticCallInterfaceDescriptor< DerivedDescriptor >
 
class  v8::internal::StaticJSCallInterfaceDescriptor< Descriptor >
 
struct  v8::internal::EmptyRegisterArray
 
struct  v8::internal::EmptyDoubleRegisterArray
 
class  v8::internal::VoidDescriptor
 
class  v8::internal::CCallDescriptor
 
class  v8::internal::CEntryDummyDescriptor
 
class  v8::internal::WasmDummyDescriptor
 
class  v8::internal::WasmHandleStackOverflowDescriptor
 
class  v8::internal::AllocateDescriptor
 
class  v8::internal::NewHeapNumberDescriptor
 
class  v8::internal::JSTrampolineDescriptor
 
class  v8::internal::RegExpTrampolineDescriptor
 
class  v8::internal::ContextOnlyDescriptor
 
class  v8::internal::NoContextDescriptor
 
class  v8::internal::LoadDescriptor
 
class  v8::internal::LoadBaselineDescriptor
 
class  v8::internal::LoadGlobalNoFeedbackDescriptor
 
class  v8::internal::LoadNoFeedbackDescriptor
 
class  v8::internal::LoadGlobalDescriptor
 
class  v8::internal::LoadGlobalBaselineDescriptor
 
class  v8::internal::LookupWithVectorDescriptor
 
class  v8::internal::LookupTrampolineDescriptor
 
class  v8::internal::LookupBaselineDescriptor
 
class  v8::internal::MaglevOptimizeCodeOrTailCallOptimizedCodeSlotDescriptor
 
class  v8::internal::StoreDescriptor
 
class  v8::internal::StoreNoFeedbackDescriptor
 
class  v8::internal::StoreBaselineDescriptor
 
class  v8::internal::StoreTransitionDescriptor
 
class  v8::internal::StoreWithVectorDescriptor
 
class  v8::internal::StoreGlobalDescriptor
 
class  v8::internal::StoreGlobalBaselineDescriptor
 
class  v8::internal::StoreGlobalWithVectorDescriptor
 
class  v8::internal::DefineKeyedOwnDescriptor
 
class  v8::internal::DefineKeyedOwnBaselineDescriptor
 
class  v8::internal::DefineKeyedOwnWithVectorDescriptor
 
class  v8::internal::LoadWithVectorDescriptor
 
class  v8::internal::KeyedLoadBaselineDescriptor
 
class  v8::internal::KeyedLoadDescriptor
 
class  v8::internal::KeyedLoadWithVectorDescriptor
 
class  v8::internal::EnumeratedKeyedLoadBaselineDescriptor
 
class  v8::internal::EnumeratedKeyedLoadDescriptor
 
class  v8::internal::KeyedHasICBaselineDescriptor
 
class  v8::internal::KeyedHasICWithVectorDescriptor
 
class  v8::internal::LoadWithReceiverAndVectorDescriptor
 
class  v8::internal::LoadWithReceiverBaselineDescriptor
 
class  v8::internal::LoadGlobalWithVectorDescriptor
 
class  v8::internal::FastNewObjectDescriptor
 
class  v8::internal::WriteBarrierDescriptor
 
class  v8::internal::IndirectPointerWriteBarrierDescriptor
 
class  v8::internal::TypeConversionDescriptor
 
class  v8::internal::TypeConversionNoContextDescriptor
 
class  v8::internal::TypeConversion_BaselineDescriptor
 
class  v8::internal::SingleParameterOnStackDescriptor
 
class  v8::internal::AsyncFunctionStackParameterDescriptor
 
class  v8::internal::GetIteratorStackParameterDescriptor
 
class  v8::internal::GetPropertyDescriptor
 
class  v8::internal::TypeofDescriptor
 
class  v8::internal::CallTrampolineDescriptor
 
class  v8::internal::CopyDataPropertiesWithExcludedPropertiesDescriptor
 
class  v8::internal::CopyDataPropertiesWithExcludedPropertiesOnStackDescriptor
 
class  v8::internal::CallVarargsDescriptor
 
class  v8::internal::CallForwardVarargsDescriptor
 
class  v8::internal::CallFunctionTemplateDescriptor
 
class  v8::internal::CallFunctionTemplateGenericDescriptor
 
class  v8::internal::CallWithSpreadDescriptor
 
class  v8::internal::CallWithSpread_BaselineDescriptor
 
class  v8::internal::CallWithSpread_WithFeedbackDescriptor
 
class  v8::internal::CallWithArrayLikeDescriptor
 
class  v8::internal::CallWithArrayLike_WithFeedbackDescriptor
 
class  v8::internal::ConstructStubDescriptor
 
class  v8::internal::ConstructVarargsDescriptor
 
class  v8::internal::ConstructForwardVarargsDescriptor
 
class  v8::internal::ConstructWithSpreadDescriptor
 
class  v8::internal::ConstructWithSpread_BaselineDescriptor
 
class  v8::internal::ConstructWithSpread_WithFeedbackDescriptor
 
class  v8::internal::ConstructWithArrayLikeDescriptor
 
class  v8::internal::ConstructForwardAllArgsDescriptor
 
class  v8::internal::ConstructForwardAllArgs_BaselineDescriptor
 
class  v8::internal::ConstructForwardAllArgs_WithFeedbackDescriptor
 
class  v8::internal::AbortDescriptor
 
class  v8::internal::ArrayConstructorDescriptor
 
class  v8::internal::ArrayNArgumentsConstructorDescriptor
 
class  v8::internal::ArrayNoArgumentConstructorDescriptor
 
class  v8::internal::ArraySingleArgumentConstructorDescriptor
 
class  v8::internal::CompareDescriptor
 
class  v8::internal::CompareNoContextDescriptor
 
class  v8::internal::StringEqualDescriptor
 
class  v8::internal::BinaryOpDescriptor
 
class  v8::internal::BinaryOp_BaselineDescriptor
 
class  v8::internal::BinarySmiOp_BaselineDescriptor
 
class  v8::internal::StringAtAsStringDescriptor
 
class  v8::internal::StringSubstringDescriptor
 
class  v8::internal::CppBuiltinAdaptorDescriptor
 
class  v8::internal::CreateFromSlowBoilerplateHelperDescriptor
 
class  v8::internal::CEntry1ArgvOnStackDescriptor
 
class  v8::internal::CallApiCallbackOptimizedDescriptor
 
class  v8::internal::CallApiCallbackGenericDescriptor
 
class  v8::internal::ApiGetterDescriptor
 
class  v8::internal::GrowArrayElementsDescriptor
 
class  v8::internal::BaselineOutOfLinePrologueDescriptor
 
class  v8::internal::BaselineLeaveFrameDescriptor
 
class  v8::internal::OnStackReplacementDescriptor
 
class  v8::internal::InterpreterDispatchDescriptor
 
class  v8::internal::InterpreterPushArgsThenCallDescriptor
 
class  v8::internal::InterpreterPushArgsThenConstructDescriptor
 
class  v8::internal::InterpreterCEntry1Descriptor
 
class  v8::internal::InterpreterCEntry2Descriptor
 
class  v8::internal::FindNonDefaultConstructorOrConstructDescriptor
 
class  v8::internal::ForInPrepareDescriptor
 
class  v8::internal::ResumeGeneratorDescriptor
 
class  v8::internal::ResumeGeneratorBaselineDescriptor
 
class  v8::internal::SuspendGeneratorBaselineDescriptor
 
class  v8::internal::RestartFrameTrampolineDescriptor
 
class  v8::internal::RunMicrotasksEntryDescriptor
 
class  v8::internal::RunMicrotasksDescriptor
 
class  v8::internal::WasmFloat32ToNumberDescriptor
 
class  v8::internal::WasmFloat64ToTaggedDescriptor
 
class  v8::internal::WasmJSToWasmWrapperDescriptor
 
class  v8::internal::WasmToJSWrapperDescriptor
 
class  v8::internal::WasmSuspendDescriptor
 
class  v8::internal::I64ToBigIntDescriptor
 
class  v8::internal::I32PairToBigIntDescriptor
 
class  v8::internal::BigIntToI64Descriptor
 
class  v8::internal::BigIntToI32PairDescriptor
 
class  v8::internal::CloneObjectWithVectorDescriptor
 
class  v8::internal::CloneObjectBaselineDescriptor
 
class  v8::internal::BinaryOp_WithFeedbackDescriptor
 
class  v8::internal::CallTrampoline_Baseline_CompactDescriptor
 
class  v8::internal::CallTrampoline_BaselineDescriptor
 
class  v8::internal::CallTrampoline_WithFeedbackDescriptor
 
class  v8::internal::Compare_WithFeedbackDescriptor
 
class  v8::internal::Compare_BaselineDescriptor
 
class  v8::internal::Construct_BaselineDescriptor
 
class  v8::internal::Construct_WithFeedbackDescriptor
 
class  v8::internal::UnaryOp_WithFeedbackDescriptor
 
class  v8::internal::UnaryOp_BaselineDescriptor
 
class  v8::internal::CheckTurboshaftFloat32TypeDescriptor
 
class  v8::internal::CheckTurboshaftFloat64TypeDescriptor
 
class  v8::internal::DebugPrintWordPtrDescriptor
 
class  v8::internal::DebugPrintFloat64Descriptor
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define TORQUE_BUILTIN_LIST_TFC(V)
 
#define INTERFACE_DESCRIPTOR_LIST(V)
 
#define DEF_ENUM(name, ...)
 
#define DECLARE_DESCRIPTOR_WITH_BASE(name, base)
 
#define DECLARE_DEFAULT_DESCRIPTOR(name)
 
#define DECLARE_JS_COMPATIBLE_DESCRIPTOR(name)
 
#define DEFINE_RESULT_AND_PARAMETERS(return_count, ...)
 
#define DEFINE_PARAMETERS_ENTRY(...)
 
#define DEFINE_PARAMETERS(...)
 
#define DEFINE_PARAMETERS_NO_CONTEXT(...)
 
#define DEFINE_PARAMETERS_VARARGS(...)
 
#define DEFINE_PARAMETERS_NO_CONTEXT_VARARGS(...)
 
#define DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT(return_count, ...)
 
#define DEFINE_RESULT_AND_PARAMETER_TYPES(...)
 
#define DEFINE_PARAMETER_TYPES(...)
 
#define DEFINE_JS_PARAMETERS(...)
 
#define DEFINE_JS_PARAMETERS_NO_CONTEXT(...)
 
#define DEFINE_JS_PARAMETER_TYPES(...)
 
#define SANDBOX_EXPOSED_DESCRIPTOR(tag)
 
#define INTERNAL_DESCRIPTOR()
 
#define DECLARE_DESCRIPTOR(name)
 
#define DEFINE_TFS_BUILTIN_DESCRIPTOR(Name, DoesNeedContext, ...)
 
#define DEF_KEY(name, ...)
 

Typedefs

using v8::internal::DeoptimizationEntryDescriptor = VoidDescriptor
 
using v8::internal::JSEntryDescriptor = VoidDescriptor
 
using v8::internal::ContinueToBuiltinDescriptor = VoidDescriptor
 

Enumerations

enum class  v8::internal::StackArgumentOrder { v8::internal::kDefault , v8::internal::kJS }
 

Functions

template<typename... Registers>
constexpr std::array< Register, 1+sizeof...(Registers)> v8::internal::RegisterArray (Register first_reg, Registers... regs)
 
constexpr EmptyRegisterArray v8::internal::RegisterArray ()
 
template<typename... Registers>
constexpr std::array< DoubleRegister, 1+sizeof...(Registers)> v8::internal::DoubleRegisterArray (DoubleRegister first_reg, Registers... regs)
 
constexpr EmptyDoubleRegisterArray v8::internal::DoubleRegisterArray ()
 

Variables

constexpr int v8::internal::kMaxBuiltinRegisterParams = 5
 
constexpr int v8::internal::kMaxTFSBuiltinRegisterParams = kMaxBuiltinRegisterParams
 
constexpr int v8::internal::kJSBuiltinRegisterParams = 4
 

Macro Definition Documentation

◆ DECLARE_DEFAULT_DESCRIPTOR

#define DECLARE_DEFAULT_DESCRIPTOR ( name)
Value:
DECLARE_DESCRIPTOR_WITH_BASE(name, StaticCallInterfaceDescriptor) \
static constexpr int kMaxRegisterParams = kMaxTFSBuiltinRegisterParams; \
\
protected: \
explicit name(CallDescriptors::Key key) \
: StaticCallInterfaceDescriptor(key) {} \
\
public:
const char * name
Definition builtins.cc:39
#define DECLARE_DESCRIPTOR_WITH_BASE(name, base)
std::unique_ptr< ValueMirror > key

Definition at line 640 of file interface-descriptors.h.

◆ DECLARE_DESCRIPTOR

#define DECLARE_DESCRIPTOR ( name)
Value:
DECLARE_DESCRIPTOR_WITH_BASE(name, StaticCallInterfaceDescriptor) \
protected: \
explicit name(CallDescriptors::Key key) \
: StaticCallInterfaceDescriptor(key) {} \
\
public:

Definition at line 772 of file interface-descriptors.h.

◆ DECLARE_DESCRIPTOR_WITH_BASE

#define DECLARE_DESCRIPTOR_WITH_BASE ( name,
base )
Value:
public: \
/* StaticCallInterfaceDescriptor can call Initialize methods */ \
friend class StaticCallInterfaceDescriptor<name>; \
explicit name() : base(key()) {} \
static inline CallDescriptors::Key key();

Definition at line 633 of file interface-descriptors.h.

◆ DECLARE_JS_COMPATIBLE_DESCRIPTOR

#define DECLARE_JS_COMPATIBLE_DESCRIPTOR ( name)
Value:
DECLARE_DESCRIPTOR_WITH_BASE(name, StaticJSCallInterfaceDescriptor) \
protected: \
explicit name(CallDescriptors::Key key) \
: StaticJSCallInterfaceDescriptor(key) {} \
\
public:

Definition at line 650 of file interface-descriptors.h.

◆ DEF_ENUM

#define DEF_ENUM ( name,
... )
Value:

Definition at line 305 of file interface-descriptors.h.

◆ DEF_KEY

#define DEF_KEY ( name,
... )
Value:
CallDescriptors::Key name##Descriptor::key() { return CallDescriptors::name; }

Definition at line 2762 of file interface-descriptors.h.

◆ DEFINE_JS_PARAMETER_TYPES

#define DEFINE_JS_PARAMETER_TYPES ( ...)
Value:
DEFINE_PARAMETER_TYPES(MachineType::AnyTagged(), /* kTarget */ \
MachineType::AnyTagged(), /* kNewTarget */ \
MachineType::Int32(), /* kActualArgumentsCount */ \
##__VA_ARGS__)
#define DEFINE_PARAMETER_TYPES(...)

Definition at line 749 of file interface-descriptors.h.

◆ DEFINE_JS_PARAMETERS

#define DEFINE_JS_PARAMETERS ( ...)
Value:
static constexpr bool kAllowVarArgs = true; \
static constexpr int kReturnCount = 1; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS; \
enum ParameterIndices { \
kTarget, \
kNewTarget, \
kActualArgumentsCount, \
##__VA_ARGS__, \
kParameterCount, \
kContext = kParameterCount /* implicit parameter */ \
};

Definition at line 721 of file interface-descriptors.h.

◆ DEFINE_JS_PARAMETERS_NO_CONTEXT

#define DEFINE_JS_PARAMETERS_NO_CONTEXT ( ...)
Value:
static constexpr bool kAllowVarArgs = true; \
static constexpr bool kNoContext = true; \
static constexpr int kReturnCount = 1; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS; \
enum ParameterIndices { \
kTarget, \
kNewTarget, \
kActualArgumentsCount, \
##__VA_ARGS__, \
kParameterCount, \
};

Definition at line 735 of file interface-descriptors.h.

◆ DEFINE_PARAMETER_TYPES

#define DEFINE_PARAMETER_TYPES ( ...)
Value:
DEFINE_RESULT_AND_PARAMETER_TYPES(MachineType::AnyTagged() /* result */, \
##__VA_ARGS__)
#define DEFINE_RESULT_AND_PARAMETER_TYPES(...)

Definition at line 715 of file interface-descriptors.h.

◆ DEFINE_PARAMETERS

#define DEFINE_PARAMETERS ( ...)
Value:
#define DEFINE_RESULT_AND_PARAMETERS(return_count,...)

Definition at line 683 of file interface-descriptors.h.

◆ DEFINE_PARAMETERS_ENTRY

#define DEFINE_PARAMETERS_ENTRY ( ...)
Value:
static constexpr bool kNoContext = true; \
static constexpr bool kNoStackScan = true; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kDefault; \
static constexpr int kReturnCount = 1; \
enum ParameterIndices { \
__dummy = -1, /* to be able to pass zero arguments */ \
##__VA_ARGS__, \
\
kParameterCount \
};

Definition at line 670 of file interface-descriptors.h.

◆ DEFINE_PARAMETERS_NO_CONTEXT

#define DEFINE_PARAMETERS_NO_CONTEXT ( ...)
Value:
DEFINE_PARAMETERS(__VA_ARGS__) \
static constexpr bool kNoContext = true;
#define DEFINE_PARAMETERS(...)

Definition at line 685 of file interface-descriptors.h.

◆ DEFINE_PARAMETERS_NO_CONTEXT_VARARGS

#define DEFINE_PARAMETERS_NO_CONTEXT_VARARGS ( ...)
Value:
static constexpr bool kAllowVarArgs = true; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS;
#define DEFINE_PARAMETERS_NO_CONTEXT(...)

Definition at line 695 of file interface-descriptors.h.

◆ DEFINE_PARAMETERS_VARARGS

#define DEFINE_PARAMETERS_VARARGS ( ...)
Value:
DEFINE_PARAMETERS(__VA_ARGS__) \
static constexpr bool kAllowVarArgs = true; \
static constexpr StackArgumentOrder kStackArgumentOrder = \
StackArgumentOrder::kJS;

Definition at line 689 of file interface-descriptors.h.

◆ DEFINE_RESULT_AND_PARAMETER_TYPES

#define DEFINE_RESULT_AND_PARAMETER_TYPES ( ...)
Value:
static constexpr bool kCustomMachineTypes = true; \
static constexpr MachineType kMachineTypes[] = {__VA_ARGS__}; \
static void InitializeTypes(CallInterfaceDescriptorData* data) { \
static_assert( \
kReturnCount + kParameterCount == arraysize(kMachineTypes), \
"Parameter names definition is not consistent with parameter types"); \
data->InitializeTypes(kMachineTypes, arraysize(kMachineTypes)); \
}
#define arraysize(array)
Definition macros.h:67

Definition at line 705 of file interface-descriptors.h.

◆ DEFINE_RESULT_AND_PARAMETERS

#define DEFINE_RESULT_AND_PARAMETERS ( return_count,
... )
Value:
static constexpr int kReturnCount = return_count; \
enum ParameterIndices { \
__dummy = -1, /* to be able to pass zero arguments */ \
##__VA_ARGS__, \
\
kParameterCount, \
kContext = kParameterCount /* implicit parameter */ \
};

Definition at line 658 of file interface-descriptors.h.

◆ DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT

#define DEFINE_RESULT_AND_PARAMETERS_NO_CONTEXT ( return_count,
... )
Value:
DEFINE_RESULT_AND_PARAMETERS(return_count, ##__VA_ARGS__) \
static constexpr bool kNoContext = true;

Definition at line 701 of file interface-descriptors.h.

◆ DEFINE_TFS_BUILTIN_DESCRIPTOR

#define DEFINE_TFS_BUILTIN_DESCRIPTOR ( Name,
DoesNeedContext,
... )
Value:
class Name##Descriptor \
: public StaticCallInterfaceDescriptor<Name##Descriptor> { \
public: \
INTERNAL_DESCRIPTOR() \
DEFINE_PARAMETERS(__VA_ARGS__) \
static constexpr bool kNoContext = DoesNeedContext == NeedsContext::kNo; \
DECLARE_DEFAULT_DESCRIPTOR(Name##Descriptor) \
};

Definition at line 2728 of file interface-descriptors.h.

◆ INTERFACE_DESCRIPTOR_LIST

#define INTERFACE_DESCRIPTOR_LIST ( V)

Definition at line 24 of file interface-descriptors.h.

◆ INTERNAL_DESCRIPTOR

#define INTERNAL_DESCRIPTOR ( )
Value:
static constexpr CodeEntrypointTag kEntrypointTag = kInvalidEntrypointTag;

Definition at line 769 of file interface-descriptors.h.

◆ SANDBOX_EXPOSED_DESCRIPTOR

#define SANDBOX_EXPOSED_DESCRIPTOR ( tag)
Value:
static constexpr CodeEntrypointTag kEntrypointTag = tag;

Definition at line 763 of file interface-descriptors.h.

◆ TORQUE_BUILTIN_LIST_TFC

#define TORQUE_BUILTIN_LIST_TFC ( V)
Value:
BUILTIN_LIST_FROM_TORQUE(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \
#define V(Name)
#define IGNORE_BUILTIN(...)

Definition at line 20 of file interface-descriptors.h.