V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
v8::internal::compiler::CodeAssembler Class Reference
Inheritance diagram for v8::internal::compiler::CodeAssembler:
v8::internal::CodeStubAssembler v8::internal::AccessorAssembler v8::internal::AddStubAssembler v8::internal::ArgumentsBuiltinsAssembler v8::internal::ArrayBuiltinsAssembler v8::internal::ArrayFlattenAssembler v8::internal::ArrayIncludesIndexofAssembler v8::internal::ArrayPopulatorAssembler v8::internal::BaseCollectionsAssembler v8::internal::BinaryOpAssembler v8::internal::CallOrConstructBuiltinsAssembler v8::internal::ConstructorBuiltinsAssembler v8::internal::ConversionBuiltinsAssembler v8::internal::DataViewBuiltinsAssembler v8::internal::DateBuiltinsAssembler v8::internal::GeneratorBuiltinsAssembler v8::internal::GrowableFixedArray v8::internal::HandlerBuiltinsAssembler v8::internal::InternalBuiltinsAssembler v8::internal::interpreter::InterpreterAssembler v8::internal::IntlBuiltinsAssembler v8::internal::IteratorBuiltinsAssembler v8::internal::LazyBuiltinsAssembler v8::internal::MathBuiltinsAssembler v8::internal::MicrotaskQueueBuiltinsAssembler v8::internal::NumberBuiltinsAssembler v8::internal::ObjectBuiltinsAssembler v8::internal::PromiseBuiltinsAssembler v8::internal::ProxiesCodeStubAssembler v8::internal::RecordWriteCodeStubAssembler v8::internal::RegExpBuiltinsAssembler v8::internal::SharedArrayBufferBuiltinsAssembler v8::internal::StringBuiltinsAssembler v8::internal::TestBuiltinsAssembler v8::internal::ToDirectStringAssembler v8::internal::TypedArrayBuiltinsAssembler v8::internal::WasmBuiltinsAssembler

Classes

class  CheckedNode
 

Public Types

using Label = CodeAssemblerLabel
 
using Variable = CodeAssemblerVariable
 
template<class T >
using TVariable = TypedCodeAssemblerVariable< T >
 
using VariableList = CodeAssemblerVariableList
 

Public Member Functions

 CodeAssembler (CodeAssemblerState *state)
 
bool Is64 () const
 
bool IsFloat64RoundUpSupported () const
 
bool IsFloat64RoundDownSupported () const
 
bool IsFloat64RoundTiesEvenSupported () const
 
bool IsFloat64RoundTruncateSupported () const
 
bool IsInt32AbsWithOverflowSupported () const
 
bool IsInt64AbsWithOverflowSupported () const
 
bool IsIntPtrAbsWithOverflowSupported () const
 
template<class T >
TNode< TUncheckedCast (Node *value)
 
template<class T , class U >
TNode< TUncheckedCast (TNode< U > value)
 
template<class T >
TNode< TReinterpretCast (Node *value)
 
CheckedNode< Object, false > Cast (Node *value, const char *location="")
 
template<class T >
CheckedNode< T, true > Cast (TNode< T > value, const char *location="")
 
TNode< Int32TInt32Constant (int32_t value)
 
TNode< Int64TInt64Constant (int64_t value)
 
TNode< IntPtrTIntPtrConstant (intptr_t value)
 
TNode< Uint32TUint32Constant (uint32_t value)
 
TNode< UintPtrTUintPtrConstant (uintptr_t value)
 
TNode< NumberNumberConstant (double value)
 
TNode< SmiSmiConstant (Smi value)
 
TNode< SmiSmiConstant (int value)
 
template<typename E , typename = typename std::enable_if<std::is_enum<E>::value>::type>
TNode< SmiSmiConstant (E value)
 
TNode< HeapObjectUntypedHeapConstant (Handle< HeapObject > object)
 
template<class Type >
TNode< TypeHeapConstant (Handle< Type > object)
 
TNode< StringStringConstant (const char *str)
 
TNode< OddballBooleanConstant (bool value)
 
TNode< ExternalReferenceExternalConstant (ExternalReference address)
 
TNode< Float64TFloat64Constant (double value)
 
TNode< HeapNumberNaNConstant ()
 
TNode< BoolTInt32TrueConstant ()
 
TNode< BoolTInt32FalseConstant ()
 
TNode< BoolTBoolConstant (bool value)
 
bool ToInt32Constant (Node *node, int32_t &out_value)
 
bool ToInt64Constant (Node *node, int64_t &out_value)
 
bool ToSmiConstant (Node *node, Smi *out_value)
 
bool ToIntPtrConstant (Node *node, intptr_t &out_value)
 
bool IsUndefinedConstant (TNode< Object > node)
 
bool IsNullConstant (TNode< Object > node)
 
TNode< Int32TSigned (TNode< Word32T > x)
 
TNode< IntPtrTSigned (TNode< WordT > x)
 
TNode< Uint32TUnsigned (TNode< Word32T > x)
 
TNode< UintPtrTUnsigned (TNode< WordT > x)
 
NodeParameter (int value)
 
TNode< ContextGetJSContextParameter ()
 
void Return (SloppyTNode< Object > value)
 
void Return (SloppyTNode< Object > value1, SloppyTNode< Object > value2)
 
void Return (SloppyTNode< Object > value1, SloppyTNode< Object > value2, SloppyTNode< Object > value3)
 
void PopAndReturn (Node *pop, Node *value)
 
void ReturnIf (Node *condition, Node *value)
 
void ReturnRaw (Node *value)
 
void DebugAbort (Node *message)
 
void DebugBreak ()
 
void Unreachable ()
 
void Comment (const char *format,...)
 
void Bind (Label *label)
 
void Goto (Label *label)
 
void GotoIf (SloppyTNode< IntegralT > condition, Label *true_label)
 
void GotoIfNot (SloppyTNode< IntegralT > condition, Label *false_label)
 
void Branch (SloppyTNode< IntegralT > condition, Label *true_label, Label *false_label)
 
template<class T >
TNode< TUninitialized ()
 
template<class... T>
void Bind (CodeAssemblerParameterizedLabel< T... > *label, TNode< T > *... phis)
 
template<class... T, class... Args>
void Branch (TNode< BoolT > condition, CodeAssemblerParameterizedLabel< T... > *if_true, CodeAssemblerParameterizedLabel< T... > *if_false, Args... args)
 
template<class... T, class... Args>
void Goto (CodeAssemblerParameterizedLabel< T... > *label, Args... args)
 
void Branch (TNode< BoolT > condition, const std::function< void()> &true_body, const std::function< void()> &false_body)
 
void Branch (TNode< BoolT > condition, Label *true_label, const std::function< void()> &false_body)
 
void Branch (TNode< BoolT > condition, const std::function< void()> &true_body, Label *false_label)
 
void Switch (Node *index, Label *default_label, const int32_t *case_values, Label **case_labels, size_t case_count)
 
NodeLoadFramePointer ()
 
NodeLoadParentFramePointer ()
 
NodeLoadStackPointer ()
 
TNode< ObjectTaggedPoisonOnSpeculation (SloppyTNode< Object > value)
 
TNode< WordTWordPoisonOnSpeculation (SloppyTNode< WordT > value)
 
NodeLoad (MachineType rep, Node *base, LoadSensitivity needs_poisoning=LoadSensitivity::kSafe)
 
template<class Type >
TNode< TypeLoad (MachineType rep, TNode< RawPtr< Type >> base)
 
NodeLoad (MachineType rep, Node *base, Node *offset, LoadSensitivity needs_poisoning=LoadSensitivity::kSafe)
 
NodeAtomicLoad (MachineType rep, Node *base, Node *offset)
 
TNode< ObjectLoadRoot (RootIndex root_index)
 
NodeStore (Node *base, Node *value)
 
NodeStore (Node *base, Node *offset, Node *value)
 
NodeStoreWithMapWriteBarrier (Node *base, Node *offset, Node *value)
 
NodeStoreNoWriteBarrier (MachineRepresentation rep, Node *base, Node *value)
 
NodeStoreNoWriteBarrier (MachineRepresentation rep, Node *base, Node *offset, Node *value)
 
NodeAtomicStore (MachineRepresentation rep, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicExchange (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicCompareExchange (MachineType type, Node *base, Node *offset, Node *old_value, Node *new_value, Node *old_value_high=nullptr, Node *new_value_high=nullptr)
 
NodeAtomicAdd (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicSub (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicAnd (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicOr (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeAtomicXor (MachineType type, Node *base, Node *offset, Node *value, Node *value_high=nullptr)
 
NodeStoreRoot (RootIndex root_index, Node *value)
 
TNode< IntPtrTWordShr (TNode< IntPtrT > left, TNode< IntegralT > right)
 
TNode< IntPtrTWordSar (TNode< IntPtrT > left, TNode< IntegralT > right)
 
TNode< IntPtrTWordAnd (TNode< IntPtrT > left, TNode< IntPtrT > right)
 
template<class Left , class Right , class = typename std::enable_if< (std::is_base_of<Object, Left>::value || std::is_base_of<ObjectPtr, Left>::value) && (std::is_base_of<Object, Right>::value || std::is_base_of<ObjectPtr, Right>::value)>::type>
TNode< BoolTWordEqual (TNode< Left > left, TNode< Right > right)
 
TNode< BoolTWordEqual (TNode< Object > left, Node *right)
 
TNode< BoolTWordEqual (Node *left, TNode< Object > right)
 
template<class Left , class Right , class = typename std::enable_if< (std::is_base_of<Object, Left>::value || std::is_base_of<ObjectPtr, Left>::value) && (std::is_base_of<Object, Right>::value || std::is_base_of<ObjectPtr, Right>::value)>::type>
TNode< BoolTWordNotEqual (TNode< Left > left, TNode< Right > right)
 
TNode< BoolTWordNotEqual (TNode< Object > left, Node *right)
 
TNode< BoolTWordNotEqual (Node *left, TNode< Object > right)
 
TNode< BoolTIntPtrEqual (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< BoolTWordEqual (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< BoolTWordNotEqual (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< BoolTWord32Equal (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< BoolTWord32NotEqual (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< BoolTWord64Equal (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< BoolTWord64NotEqual (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Int32TInt32Add (TNode< Int32T > left, TNode< Int32T > right)
 
TNode< Uint32TUint32Add (TNode< Uint32T > left, TNode< Uint32T > right)
 
TNode< WordTIntPtrAdd (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< IntPtrTIntPtrDiv (TNode< IntPtrT > left, TNode< IntPtrT > right)
 
TNode< WordTIntPtrSub (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< WordTIntPtrMul (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< IntPtrTIntPtrAdd (TNode< IntPtrT > left, TNode< IntPtrT > right)
 
TNode< IntPtrTIntPtrSub (TNode< IntPtrT > left, TNode< IntPtrT > right)
 
TNode< IntPtrTIntPtrMul (TNode< IntPtrT > left, TNode< IntPtrT > right)
 
TNode< UintPtrTUintPtrAdd (TNode< UintPtrT > left, TNode< UintPtrT > right)
 
TNode< UintPtrTUintPtrSub (TNode< UintPtrT > left, TNode< UintPtrT > right)
 
TNode< WordTWordShl (SloppyTNode< WordT > value, int shift)
 
TNode< WordTWordShr (SloppyTNode< WordT > value, int shift)
 
TNode< WordTWordSar (SloppyTNode< WordT > value, int shift)
 
TNode< IntPtrTWordShr (TNode< IntPtrT > value, int shift)
 
TNode< IntPtrTWordSar (TNode< IntPtrT > value, int shift)
 
TNode< Word32TWord32Shr (SloppyTNode< Word32T > value, int shift)
 
TNode< WordTWordOr (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< WordTWordAnd (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< WordTWordXor (SloppyTNode< WordT > left, SloppyTNode< WordT > right)
 
TNode< WordTWordShl (SloppyTNode< WordT > left, SloppyTNode< IntegralT > right)
 
TNode< WordTWordShr (SloppyTNode< WordT > left, SloppyTNode< IntegralT > right)
 
TNode< WordTWordSar (SloppyTNode< WordT > left, SloppyTNode< IntegralT > right)
 
TNode< Word32TWord32Or (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word32TWord32And (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word32TWord32Xor (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word32TWord32Shl (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word32TWord32Shr (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word32TWord32Sar (SloppyTNode< Word32T > left, SloppyTNode< Word32T > right)
 
TNode< Word64TWord64Or (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Word64TWord64And (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Word64TWord64Xor (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Word64TWord64Shl (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Word64TWord64Shr (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< Word64TWord64Sar (SloppyTNode< Word64T > left, SloppyTNode< Word64T > right)
 
TNode< UintPtrTChangeFloat64ToUintPtr (SloppyTNode< Float64T > value)
 
TNode< Float64TChangeUintPtrToFloat64 (TNode< UintPtrT > value)
 
NodeRoundIntPtrToFloat64 (Node *value)
 
TNode< UintPtrTChangeUint32ToWord (SloppyTNode< Word32T > value)
 
TNode< IntPtrTChangeInt32ToIntPtr (SloppyTNode< Word32T > value)
 
NodeRetain (Node *value)
 
NodeProjection (int index, Node *value)
 
template<int index, class T1 , class T2 >
TNode< typename std::tuple_element< index, std::tuple< T1, T2 > >::typeProjection (TNode< PairT< T1, T2 >> value)
 
template<class... TArgs>
TNode< ObjectCallRuntime (Runtime::FunctionId function, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
TNode< ObjectCallRuntimeWithCEntry (Runtime::FunctionId function, TNode< Code > centry, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
void TailCallRuntime (Runtime::FunctionId function, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
void TailCallRuntime (Runtime::FunctionId function, TNode< Int32T > arity, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
void TailCallRuntimeWithCEntry (Runtime::FunctionId function, TNode< Code > centry, TNode< Object > context, TArgs... args)
 
template<class T = Object, class... TArgs>
TNode< TCallStub (Callable const &callable, SloppyTNode< Object > context, TArgs... args)
 
template<class T = Object, class... TArgs>
TNode< TCallStub (const CallInterfaceDescriptor &descriptor, SloppyTNode< Code > target, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
NodeCallStubR (const CallInterfaceDescriptor &descriptor, size_t result_size, SloppyTNode< Code > target, SloppyTNode< Object > context, TArgs... args)
 
NodeCallStubN (const CallInterfaceDescriptor &descriptor, size_t result_size, int input_count, Node *const *inputs)
 
template<class... TArgs>
void TailCallStub (Callable const &callable, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
void TailCallStub (const CallInterfaceDescriptor &descriptor, SloppyTNode< Code > target, SloppyTNode< Object > context, TArgs... args)
 
template<class... TArgs>
NodeTailCallBytecodeDispatch (const CallInterfaceDescriptor &descriptor, Node *target, TArgs... args)
 
template<class... TArgs>
NodeTailCallStubThenBytecodeDispatch (const CallInterfaceDescriptor &descriptor, Node *target, Node *context, TArgs... args)
 
TNode< ObjectTailCallJSCode (TNode< Code > code, TNode< Context > context, TNode< JSFunction > function, TNode< Object > new_target, TNode< Int32T > arg_count)
 
template<class... TArgs>
NodeCallJS (Callable const &callable, Node *context, Node *function, Node *receiver, TArgs... args)
 
template<class... TArgs>
NodeConstructJS (Callable const &callable, Node *context, Node *new_target, TArgs... args)
 
NodeCallCFunctionN (Signature< MachineType > *signature, int input_count, Node *const *inputs)
 
NodeCallCFunction1 (MachineType return_type, MachineType arg0_type, Node *function, Node *arg0)
 
NodeCallCFunction1WithCallerSavedRegisters (MachineType return_type, MachineType arg0_type, Node *function, Node *arg0, SaveFPRegsMode mode)
 
NodeCallCFunction2 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, Node *function, Node *arg0, Node *arg1)
 
NodeCallCFunction3 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, Node *function, Node *arg0, Node *arg1, Node *arg2)
 
NodeCallCFunction3WithCallerSavedRegisters (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, Node *function, Node *arg0, Node *arg1, Node *arg2, SaveFPRegsMode mode)
 
NodeCallCFunction4 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, MachineType arg3_type, Node *function, Node *arg0, Node *arg1, Node *arg2, Node *arg3)
 
NodeCallCFunction5 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, MachineType arg3_type, MachineType arg4_type, Node *function, Node *arg0, Node *arg1, Node *arg2, Node *arg3, Node *arg4)
 
NodeCallCFunction6 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, MachineType arg3_type, MachineType arg4_type, MachineType arg5_type, Node *function, Node *arg0, Node *arg1, Node *arg2, Node *arg3, Node *arg4, Node *arg5)
 
NodeCallCFunction9 (MachineType return_type, MachineType arg0_type, MachineType arg1_type, MachineType arg2_type, MachineType arg3_type, MachineType arg4_type, MachineType arg5_type, MachineType arg6_type, MachineType arg7_type, MachineType arg8_type, Node *function, Node *arg0, Node *arg1, Node *arg2, Node *arg3, Node *arg4, Node *arg5, Node *arg6, Node *arg7, Node *arg8)
 
void GotoIfException (Node *node, Label *if_exception, Variable *exception_var=nullptr)
 
Factoryfactory () const
 
Isolateisolate () const
 
Zonezone () const
 
CodeAssemblerStatestate ()
 
void BreakOnNode (int node_id)
 
bool UnalignedLoadSupported (MachineRepresentation rep) const
 
bool UnalignedStoreSupported (MachineRepresentation rep) const
 
bool IsExceptionHandlerActive () const
 

Static Public Member Functions

static Handle< CodeGenerateCode (CodeAssemblerState *state, const AssemblerOptions &options)
 

Static Public Attributes

static constexpr int kTargetParameterIndex = -1
 

Protected Member Functions

void RegisterCallGenerationCallbacks (const CodeAssemblerCallback &call_prologue, const CodeAssemblerCallback &call_epilogue)
 
void UnregisterCallGenerationCallbacks ()
 
bool Word32ShiftIsSafe () const
 
PoisoningMitigationLevel poisoning_level () const
 
bool IsJSFunctionCall () const
 

Detailed Description

Definition at line 640 of file code-assembler.h.


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