v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::compiler::CallDescriptor Class Referencefinal

#include <linkage.h>

Inheritance diagram for v8::internal::compiler::CallDescriptor:
Collaboration diagram for v8::internal::compiler::CallDescriptor:

Public Types

enum  Kind { kCallCodeObject , kCallJSFunction , kCallAddress , kCallBuiltinPointer }
 
enum  Flag {
  kNoFlags = 0u , kNeedsFrameState = 1u << 0 , kHasExceptionHandler = 1u << 1 , kCanUseRoots = 1u << 2 ,
  kInitializeRootRegister = 1u << 3 , kNoAllocate = 1u << 4 , kFixedTargetRegister = 1u << 5 , kCallerSavedRegisters = 1u << 6 ,
  kCallerSavedFPRegisters = 1u << 7 , kIsTailCallForTierUp = 1u << 8 , kNoFunctionDescriptor = 1u << 9
}
 
using Flags = base::Flags<Flag>
 

Public Member Functions

 CallDescriptor (Kind kind, CodeEntrypointTag tag, MachineType target_type, LinkageLocation target_loc, LocationSignature *location_sig, size_t param_slot_count, Operator::Properties properties, RegList callee_saved_registers, DoubleRegList callee_saved_fp_registers, Flags flags, const char *debug_name="", StackArgumentOrder stack_order=StackArgumentOrder::kDefault, const RegList allocatable_registers={}, size_t return_slot_count=0, uint64_t signature_hash=kInvalidWasmSignatureHash)
 
 CallDescriptor (const CallDescriptor &)=delete
 
CallDescriptoroperator= (const CallDescriptor &)=delete
 
Kind kind () const
 
CodeEntrypointTag tag () const
 
uint64_t signature_hash () const
 
uint32_t shifted_tag () const
 
bool IsCodeObjectCall () const
 
bool IsCFunctionCall () const
 
bool IsJSFunctionCall () const
 
bool IsBuiltinPointerCall () const
 
bool RequiresFrameAsIncoming () const
 
bool RequiresEntrypointTagForCall () const
 
size_t ReturnCount () const
 
size_t ParameterCount () const
 
size_t GPParameterCount () const
 
size_t FPParameterCount () const
 
size_t ParameterSlotCount () const
 
size_t ReturnSlotCount () const
 
size_t JSParameterCount () const
 
int GetStackIndexFromSlot (int slot_index) const
 
size_t InputCount () const
 
size_t FrameStateCount () const
 
Flags flags () const
 
bool NeedsFrameState () const
 
bool InitializeRootRegister () const
 
bool NeedsCallerSavedRegisters () const
 
bool NeedsCallerSavedFPRegisters () const
 
bool IsTailCallForTierUp () const
 
bool NoFunctionDescriptor () const
 
LinkageLocation GetReturnLocation (size_t index) const
 
LinkageLocation GetInputLocation (size_t index) const
 
MachineSignatureGetMachineSignature (Zone *zone) const
 
MachineType GetReturnType (size_t index) const
 
MachineType GetInputType (size_t index) const
 
MachineType GetParameterType (size_t index) const
 
StackArgumentOrder GetStackArgumentOrder () const
 
Operator::Properties properties () const
 
RegList CalleeSavedRegisters () const
 
DoubleRegList CalleeSavedFPRegisters () const
 
const char * debug_name () const
 
int GetStackParameterDelta (const CallDescriptor *tail_caller) const
 
int GetOffsetToFirstUnusedStackSlot () const
 
int GetOffsetToReturns () const
 
uint32_t GetTaggedParameterSlots () const
 
bool CanTailCall (const CallDescriptor *callee) const
 
int CalculateFixedFrameSize (CodeKind code_kind) const
 
RegList AllocatableRegisters () const
 
bool HasRestrictedAllocatableRegisters () const
 
EncodedCSignature ToEncodedCSignature () const
 

Static Public Attributes

static constexpr int kFlagsBitsEncodedInInstructionCode = 10
 

Private Member Functions

void ComputeParamCounts () const
 

Private Attributes

const Kind kind_
 
const CodeEntrypointTag tag_
 
const MachineType target_type_
 
const LinkageLocation target_loc_
 
const LocationSignature *const location_sig_
 
const size_t param_slot_count_
 
const size_t return_slot_count_
 
const Operator::Properties properties_
 
const RegList callee_saved_registers_
 
const DoubleRegList callee_saved_fp_registers_
 
const RegList allocatable_registers_
 
const Flags flags_
 
const StackArgumentOrder stack_order_
 
const char *const debug_name_
 
uint64_t signature_hash_
 
std::optional< size_tgp_param_count_
 
std::optional< size_tfp_param_count_
 

Friends

class Linkage
 

Detailed Description

Definition at line 43 of file linkage.h.

Member Typedef Documentation

◆ Flags

Member Enumeration Documentation

◆ Flag

Enumerator
kNoFlags 
kNeedsFrameState 
kHasExceptionHandler 
kCanUseRoots 
kInitializeRootRegister 
kNoAllocate 
kFixedTargetRegister 
kCallerSavedRegisters 
kCallerSavedFPRegisters 
kIsTailCallForTierUp 
kNoFunctionDescriptor 

Definition at line 64 of file linkage.h.

◆ Kind

Enumerator
kCallCodeObject 
kCallJSFunction 
kCallAddress 
kCallBuiltinPointer 

Definition at line 47 of file linkage.h.

Constructor & Destructor Documentation

◆ CallDescriptor() [1/2]

v8::internal::compiler::CallDescriptor::CallDescriptor ( Kind kind,
CodeEntrypointTag tag,
MachineType target_type,
LinkageLocation target_loc,
LocationSignature * location_sig,
size_t param_slot_count,
Operator::Properties properties,
RegList callee_saved_registers,
DoubleRegList callee_saved_fp_registers,
Flags flags,
const char * debug_name = "",
StackArgumentOrder stack_order = StackArgumentOrder::kDefault,
const RegList allocatable_registers = {},
size_t return_slot_count = 0,
uint64_t signature_hash = kInvalidWasmSignatureHash )
inline

Definition at line 107 of file linkage.h.

◆ CallDescriptor() [2/2]

v8::internal::compiler::CallDescriptor::CallDescriptor ( const CallDescriptor & )
delete

Member Function Documentation

◆ AllocatableRegisters()

RegList v8::internal::compiler::CallDescriptor::AllocatableRegisters ( ) const
inline

Definition at line 331 of file linkage.h.

Here is the caller graph for this function:

◆ CalculateFixedFrameSize()

int v8::internal::compiler::CallDescriptor::CalculateFixedFrameSize ( CodeKind code_kind) const

Definition at line 204 of file linkage.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CalleeSavedFPRegisters()

DoubleRegList v8::internal::compiler::CallDescriptor::CalleeSavedFPRegisters ( ) const
inline

Definition at line 303 of file linkage.h.

Here is the caller graph for this function:

◆ CalleeSavedRegisters()

RegList v8::internal::compiler::CallDescriptor::CalleeSavedRegisters ( ) const
inline

Definition at line 300 of file linkage.h.

◆ CanTailCall()

bool v8::internal::compiler::CallDescriptor::CanTailCall ( const CallDescriptor * callee) const

Definition at line 182 of file linkage.cc.

Here is the call graph for this function:

◆ ComputeParamCounts()

void v8::internal::compiler::CallDescriptor::ComputeParamCounts ( ) const
private

Definition at line 262 of file linkage.cc.

Here is the call graph for this function:

◆ debug_name()

const char * v8::internal::compiler::CallDescriptor::debug_name ( ) const
inline

Definition at line 307 of file linkage.h.

◆ flags()

Flags v8::internal::compiler::CallDescriptor::flags ( ) const
inline

Definition at line 255 of file linkage.h.

Here is the caller graph for this function:

◆ FPParameterCount()

size_t v8::internal::compiler::CallDescriptor::FPParameterCount ( ) const
inline

Definition at line 220 of file linkage.h.

Here is the caller graph for this function:

◆ FrameStateCount()

size_t v8::internal::compiler::CallDescriptor::FrameStateCount ( ) const
inline

Definition at line 253 of file linkage.h.

Here is the caller graph for this function:

◆ GetInputLocation()

LinkageLocation v8::internal::compiler::CallDescriptor::GetInputLocation ( size_t index) const
inline

Definition at line 274 of file linkage.h.

Here is the caller graph for this function:

◆ GetInputType()

MachineType v8::internal::compiler::CallDescriptor::GetInputType ( size_t index) const
inline

Definition at line 285 of file linkage.h.

Here is the caller graph for this function:

◆ GetMachineSignature()

MachineSignature * v8::internal::compiler::CallDescriptor::GetMachineSignature ( Zone * zone) const

Definition at line 81 of file linkage.cc.

Here is the call graph for this function:

◆ GetOffsetToFirstUnusedStackSlot()

int v8::internal::compiler::CallDescriptor::GetOffsetToFirstUnusedStackSlot ( ) const

Definition at line 113 of file linkage.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOffsetToReturns()

int v8::internal::compiler::CallDescriptor::GetOffsetToReturns ( ) const

Definition at line 126 of file linkage.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetParameterType()

MachineType v8::internal::compiler::CallDescriptor::GetParameterType ( size_t index) const
inline

Definition at line 290 of file linkage.h.

Here is the caller graph for this function:

◆ GetReturnLocation()

LinkageLocation v8::internal::compiler::CallDescriptor::GetReturnLocation ( size_t index) const
inline

Definition at line 270 of file linkage.h.

Here is the caller graph for this function:

◆ GetReturnType()

MachineType v8::internal::compiler::CallDescriptor::GetReturnType ( size_t index) const
inline

Definition at line 281 of file linkage.h.

Here is the caller graph for this function:

◆ GetStackArgumentOrder()

StackArgumentOrder v8::internal::compiler::CallDescriptor::GetStackArgumentOrder ( ) const
inline

Definition at line 294 of file linkage.h.

◆ GetStackIndexFromSlot()

int v8::internal::compiler::CallDescriptor::GetStackIndexFromSlot ( int slot_index) const
inline

Definition at line 239 of file linkage.h.

◆ GetStackParameterDelta()

int v8::internal::compiler::CallDescriptor::GetStackParameterDelta ( const CallDescriptor * tail_caller) const

Definition at line 96 of file linkage.cc.

Here is the call graph for this function:

◆ GetTaggedParameterSlots()

uint32_t v8::internal::compiler::CallDescriptor::GetTaggedParameterSlots ( ) const

Definition at line 151 of file linkage.cc.

Here is the call graph for this function:

◆ GPParameterCount()

size_t v8::internal::compiler::CallDescriptor::GPParameterCount ( ) const
inline

Definition at line 212 of file linkage.h.

Here is the caller graph for this function:

◆ HasRestrictedAllocatableRegisters()

bool v8::internal::compiler::CallDescriptor::HasRestrictedAllocatableRegisters ( ) const
inline

Definition at line 333 of file linkage.h.

Here is the caller graph for this function:

◆ InitializeRootRegister()

bool v8::internal::compiler::CallDescriptor::InitializeRootRegister ( ) const
inline

Definition at line 258 of file linkage.h.

Here is the call graph for this function:

◆ InputCount()

size_t v8::internal::compiler::CallDescriptor::InputCount ( ) const
inline

Definition at line 251 of file linkage.h.

Here is the caller graph for this function:

◆ IsBuiltinPointerCall()

bool v8::internal::compiler::CallDescriptor::IsBuiltinPointerCall ( ) const
inline

Definition at line 190 of file linkage.h.

◆ IsCFunctionCall()

bool v8::internal::compiler::CallDescriptor::IsCFunctionCall ( ) const
inline

Definition at line 161 of file linkage.h.

Here is the caller graph for this function:

◆ IsCodeObjectCall()

bool v8::internal::compiler::CallDescriptor::IsCodeObjectCall ( ) const
inline

Definition at line 158 of file linkage.h.

◆ IsJSFunctionCall()

bool v8::internal::compiler::CallDescriptor::IsJSFunctionCall ( ) const
inline

Definition at line 164 of file linkage.h.

Here is the caller graph for this function:

◆ IsTailCallForTierUp()

bool v8::internal::compiler::CallDescriptor::IsTailCallForTierUp ( ) const
inline

Definition at line 267 of file linkage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ JSParameterCount()

size_t v8::internal::compiler::CallDescriptor::JSParameterCount ( ) const
inline

Definition at line 234 of file linkage.h.

Here is the caller graph for this function:

◆ kind()

Kind v8::internal::compiler::CallDescriptor::kind ( ) const
inline

Definition at line 143 of file linkage.h.

Here is the caller graph for this function:

◆ NeedsCallerSavedFPRegisters()

bool v8::internal::compiler::CallDescriptor::NeedsCallerSavedFPRegisters ( ) const
inline

Definition at line 264 of file linkage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NeedsCallerSavedRegisters()

bool v8::internal::compiler::CallDescriptor::NeedsCallerSavedRegisters ( ) const
inline

Definition at line 261 of file linkage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NeedsFrameState()

bool v8::internal::compiler::CallDescriptor::NeedsFrameState ( ) const
inline

Definition at line 257 of file linkage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NoFunctionDescriptor()

bool v8::internal::compiler::CallDescriptor::NoFunctionDescriptor ( ) const
inline

Definition at line 268 of file linkage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator=()

CallDescriptor & v8::internal::compiler::CallDescriptor::operator= ( const CallDescriptor & )
delete

◆ ParameterCount()

size_t v8::internal::compiler::CallDescriptor::ParameterCount ( ) const
inline

Definition at line 209 of file linkage.h.

Here is the caller graph for this function:

◆ ParameterSlotCount()

size_t v8::internal::compiler::CallDescriptor::ParameterSlotCount ( ) const
inline

Definition at line 228 of file linkage.h.

Here is the caller graph for this function:

◆ properties()

Operator::Properties v8::internal::compiler::CallDescriptor::properties ( ) const
inline

Definition at line 297 of file linkage.h.

Here is the caller graph for this function:

◆ RequiresEntrypointTagForCall()

bool v8::internal::compiler::CallDescriptor::RequiresEntrypointTagForCall ( ) const
inline

Definition at line 201 of file linkage.h.

Here is the caller graph for this function:

◆ RequiresFrameAsIncoming()

bool v8::internal::compiler::CallDescriptor::RequiresFrameAsIncoming ( ) const
inline

Definition at line 192 of file linkage.h.

Here is the caller graph for this function:

◆ ReturnCount()

size_t v8::internal::compiler::CallDescriptor::ReturnCount ( ) const
inline

Definition at line 204 of file linkage.h.

Here is the caller graph for this function:

◆ ReturnSlotCount()

size_t v8::internal::compiler::CallDescriptor::ReturnSlotCount ( ) const
inline

Definition at line 231 of file linkage.h.

Here is the caller graph for this function:

◆ shifted_tag()

uint32_t v8::internal::compiler::CallDescriptor::shifted_tag ( ) const
inline

Definition at line 152 of file linkage.h.

Here is the caller graph for this function:

◆ signature_hash()

uint64_t v8::internal::compiler::CallDescriptor::signature_hash ( ) const

Definition at line 231 of file linkage.cc.

Here is the caller graph for this function:

◆ tag()

CodeEntrypointTag v8::internal::compiler::CallDescriptor::tag ( ) const
inline

Definition at line 146 of file linkage.h.

◆ ToEncodedCSignature()

EncodedCSignature v8::internal::compiler::CallDescriptor::ToEncodedCSignature ( ) const

Definition at line 238 of file linkage.cc.

Here is the call graph for this function:

Friends And Related Symbol Documentation

◆ Linkage

friend class Linkage
friend

Definition at line 342 of file linkage.h.

Member Data Documentation

◆ allocatable_registers_

const RegList v8::internal::compiler::CallDescriptor::allocatable_registers_
private

Definition at line 356 of file linkage.h.

◆ callee_saved_fp_registers_

const DoubleRegList v8::internal::compiler::CallDescriptor::callee_saved_fp_registers_
private

Definition at line 353 of file linkage.h.

◆ callee_saved_registers_

const RegList v8::internal::compiler::CallDescriptor::callee_saved_registers_
private

Definition at line 352 of file linkage.h.

◆ debug_name_

const char* const v8::internal::compiler::CallDescriptor::debug_name_
private

Definition at line 359 of file linkage.h.

◆ flags_

const Flags v8::internal::compiler::CallDescriptor::flags_
private

Definition at line 357 of file linkage.h.

◆ fp_param_count_

std::optional<size_t> v8::internal::compiler::CallDescriptor::fp_param_count_
mutableprivate

Definition at line 364 of file linkage.h.

◆ gp_param_count_

std::optional<size_t> v8::internal::compiler::CallDescriptor::gp_param_count_
mutableprivate

Definition at line 363 of file linkage.h.

◆ kFlagsBitsEncodedInInstructionCode

int v8::internal::compiler::CallDescriptor::kFlagsBitsEncodedInInstructionCode = 10
staticconstexpr

Definition at line 63 of file linkage.h.

◆ kind_

const Kind v8::internal::compiler::CallDescriptor::kind_
private

Definition at line 344 of file linkage.h.

◆ location_sig_

const LocationSignature* const v8::internal::compiler::CallDescriptor::location_sig_
private

Definition at line 348 of file linkage.h.

◆ param_slot_count_

const size_t v8::internal::compiler::CallDescriptor::param_slot_count_
private

Definition at line 349 of file linkage.h.

◆ properties_

const Operator::Properties v8::internal::compiler::CallDescriptor::properties_
private

Definition at line 351 of file linkage.h.

◆ return_slot_count_

const size_t v8::internal::compiler::CallDescriptor::return_slot_count_
private

Definition at line 350 of file linkage.h.

◆ signature_hash_

uint64_t v8::internal::compiler::CallDescriptor::signature_hash_
private

Definition at line 361 of file linkage.h.

◆ stack_order_

const StackArgumentOrder v8::internal::compiler::CallDescriptor::stack_order_
private

Definition at line 358 of file linkage.h.

◆ tag_

const CodeEntrypointTag v8::internal::compiler::CallDescriptor::tag_
private

Definition at line 345 of file linkage.h.

◆ target_loc_

const LinkageLocation v8::internal::compiler::CallDescriptor::target_loc_
private

Definition at line 347 of file linkage.h.

◆ target_type_

const MachineType v8::internal::compiler::CallDescriptor::target_type_
private

Definition at line 346 of file linkage.h.


The documentation for this class was generated from the following files: