v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
code-stub-assembler.h File Reference
Include dependency graph for code-stub-assembler.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::CodeStubAssembler
 
struct  v8::internal::CodeStubAssembler::Reference
 
struct  v8::internal::CodeStubAssembler::FeedbackValues
 
class  v8::internal::CodeStubArguments
 
class  v8::internal::ToDirectStringAssembler
 
class  v8::internal::PrototypeCheckAssembler
 
struct  v8::internal::PrototypeCheckAssembler::DescriptorIndexNameValue
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define V8_CODEGEN_CODE_STUB_ASSEMBLER_MACROS_DEFINED   1
 
#define CSA_CHECK(csa, x)
 
#define CSA_HOLE_SECURITY_CHECK(csa, x)
 
#define CSA_DCHECK(csa, ...)
 
#define CSA_DCHECK_JS_ARGC_EQ(csa, expected)
 
#define BIND(label)
 
#define TYPED_VARIABLE_DEF(type, name, ...)
 
#define TYPED_VARIABLE_CONSTRUCTOR(name, ...)
 
#define TVARIABLE(...)
 
#define TVARIABLE_CONSTRUCTOR(...)
 
#define CSA_SLOW_DCHECK(csa, ...)
 
#define CSA_SBXCHECK(csa, ...)
 
#define PARAMETER_BINOP(OpName, IntPtrOpName, SmiOpName)
 
#define PARAMETER_BINOP(OpName, IntPtrOpName, SmiOpName)
 
#define PARAMETER_BINOP(OpName, UintPtrOpName, SmiOpName)
 
#define HEAP_CONSTANT_ACCESSOR(rootIndexName, rootAccessorName, name)
 
#define HEAP_CONSTANT_ACCESSOR(rootIndexName, rootAccessorName, name)
 
#define HEAP_CONSTANT_TEST(rootIndexName, rootAccessorName, name)
 
#define SMI_ARITHMETIC_BINOP(SmiOpName, IntPtrOpName, Int32OpName)
 
#define SMI_COMPARISON_OP(SmiOpName, IntPtrOpName, Int32OpName)
 
#define BINT_COMPARISON_OP(BIntOpName, SmiOpName, IntPtrOpName)
 
#define CLASS_MAP_CONSTANT_ADAPTER(V, rootIndexName, rootAccessorName, class_name)
 

Enumerations

enum class  v8::internal::PrimitiveType { v8::internal::kBoolean , v8::internal::kNumber , v8::internal::kString , v8::internal::kSymbol }
 

Macro Definition Documentation

◆ BIND

#define BIND ( label)
Value:
Bind(label)
Label label

◆ BINT_COMPARISON_OP

#define BINT_COMPARISON_OP ( BIntOpName,
SmiOpName,
IntPtrOpName )
Value:
TNode<BoolT> BIntOpName(TNode<BInt> a, TNode<BInt> b) { \
return IntPtrOpName(a, b); \
}

Definition at line 552 of file code-stub-assembler.h.

◆ CLASS_MAP_CONSTANT_ADAPTER

#define CLASS_MAP_CONSTANT_ADAPTER ( V,
rootIndexName,
rootAccessorName,
class_name )
Value:
template <> \
inline bool CodeStubAssembler::ClassHasMapConstant<class_name>() { \
return true; \
} \
template <> \
inline TNode<Map> CodeStubAssembler::GetClassMapConstant<class_name>() { \
return class_name##MapConstant(); \
}

Definition at line 4953 of file code-stub-assembler.h.

◆ CSA_CHECK

#define CSA_CHECK ( csa,
x )
Value:
(csa)->FastCheck(x)
CodeStubAssembler & csa
int x

◆ CSA_DCHECK

#define CSA_DCHECK ( csa,
... )
Value:
((void)0)

◆ CSA_DCHECK_JS_ARGC_EQ

#define CSA_DCHECK_JS_ARGC_EQ ( csa,
expected )
Value:
((void)0)

◆ CSA_HOLE_SECURITY_CHECK

#define CSA_HOLE_SECURITY_CHECK ( csa,
x )
Value:
(csa)->Check([&]() -> TNode<BoolT> { return x; }, #x, __FILE__, __LINE__)

◆ CSA_SBXCHECK

#define CSA_SBXCHECK ( csa,
... )
Value:
CSA_DCHECK(csa, __VA_ARGS__)
#define CSA_DCHECK(csa,...)

◆ CSA_SLOW_DCHECK

#define CSA_SLOW_DCHECK ( csa,
... )
Value:
((void)0)

◆ HEAP_CONSTANT_ACCESSOR [1/2]

#define HEAP_CONSTANT_ACCESSOR ( rootIndexName,
rootAccessorName,
name )
Value:
TNode<RemoveTagged< \
decltype(std::declval<ReadOnlyRoots>().rootAccessorName())>::type> \
name##Constant();

Definition at line 312 of file code-stub-assembler.h.

◆ HEAP_CONSTANT_ACCESSOR [2/2]

#define HEAP_CONSTANT_ACCESSOR ( rootIndexName,
rootAccessorName,
name )
Value:
TNode<RemoveTagged<decltype(std::declval<Heap>().rootAccessorName())>::type> \
name##Constant();

Definition at line 312 of file code-stub-assembler.h.

◆ HEAP_CONSTANT_TEST

#define HEAP_CONSTANT_TEST ( rootIndexName,
rootAccessorName,
name )
Value:
TNode<BoolT> Is##name(TNode<Object> value); \
TNode<BoolT> IsNot##name(TNode<Object> value);
const char * name
Definition builtins.cc:39

Definition at line 325 of file code-stub-assembler.h.

◆ PARAMETER_BINOP [1/3]

#define PARAMETER_BINOP ( OpName,
IntPtrOpName,
SmiOpName )
Value:
TNode<Smi> OpName(TNode<Smi> a, TNode<Smi> b) { return SmiOpName(a, b); } \
TNode<IntPtrT> OpName(TNode<IntPtrT> a, TNode<IntPtrT> b) { \
return IntPtrOpName(a, b); \
} \
TNode<UintPtrT> OpName(TNode<UintPtrT> a, TNode<UintPtrT> b) { \
return Unsigned(IntPtrOpName(Signed(a), Signed(b))); \
} \
TNode<RawPtrT> OpName(TNode<RawPtrT> a, TNode<RawPtrT> b) { \
return ReinterpretCast<RawPtrT>(IntPtrOpName( \
ReinterpretCast<IntPtrT>(a), ReinterpretCast<IntPtrT>(b))); \
}
constexpr std::make_signed_t< T > Signed(T value)
Definition bits.h:91
constexpr std::make_unsigned_t< T > Unsigned(T value)
Definition bits.h:86

Definition at line 222 of file code-stub-assembler.h.

◆ PARAMETER_BINOP [2/3]

#define PARAMETER_BINOP ( OpName,
IntPtrOpName,
SmiOpName )
Value:
TNode<BoolT> OpName(TNode<Smi> a, TNode<Smi> b) { return SmiOpName(a, b); } \
TNode<BoolT> OpName(TNode<IntPtrT> a, TNode<IntPtrT> b) { \
return IntPtrOpName(a, b); \
} \
/* IntPtrXXX comparisons shouldn't be used with unsigned types, use */ \
/* UintPtrXXX operations explicitly instead. */ \
TNode<BoolT> OpName(TNode<UintPtrT> a, TNode<UintPtrT> b) { UNREACHABLE(); } \
TNode<BoolT> OpName(TNode<RawPtrT> a, TNode<RawPtrT> b) { UNREACHABLE(); }
#define UNREACHABLE()
Definition logging.h:67

Definition at line 222 of file code-stub-assembler.h.

◆ PARAMETER_BINOP [3/3]

#define PARAMETER_BINOP ( OpName,
UintPtrOpName,
SmiOpName )
Value:
TNode<BoolT> OpName(TNode<Smi> a, TNode<Smi> b) { return SmiOpName(a, b); } \
TNode<BoolT> OpName(TNode<IntPtrT> a, TNode<IntPtrT> b) { \
return UintPtrOpName(Unsigned(a), Unsigned(b)); \
} \
TNode<BoolT> OpName(TNode<UintPtrT> a, TNode<UintPtrT> b) { \
return UintPtrOpName(a, b); \
} \
TNode<BoolT> OpName(TNode<RawPtrT> a, TNode<RawPtrT> b) { \
return UintPtrOpName(a, b); \
}

Definition at line 222 of file code-stub-assembler.h.

◆ SMI_ARITHMETIC_BINOP

#define SMI_ARITHMETIC_BINOP ( SmiOpName,
IntPtrOpName,
Int32OpName )
Value:
TNode<Smi> SmiOpName(TNode<Smi> a, TNode<Smi> b) { \
if (SmiValuesAre32Bits()) { \
return BitcastWordToTaggedSigned( \
IntPtrOpName(BitcastTaggedToWordForTagAndSmiBits(a), \
BitcastTaggedToWordForTagAndSmiBits(b))); \
} else { \
DCHECK(SmiValuesAre31Bits()); \
return BitcastWordToTaggedSigned(ChangeInt32ToIntPtr(Int32OpName( \
TruncateIntPtrToInt32(BitcastTaggedToWordForTagAndSmiBits(a)), \
TruncateIntPtrToInt32(BitcastTaggedToWordForTagAndSmiBits(b))))); \
} \
}

Definition at line 390 of file code-stub-assembler.h.

◆ SMI_COMPARISON_OP

#define SMI_COMPARISON_OP ( SmiOpName,
IntPtrOpName,
Int32OpName )
Value:
TNode<BoolT> SmiOpName(TNode<Smi> a, TNode<Smi> b) { \
if (kTaggedSize == kInt64Size) { \
return IntPtrOpName(BitcastTaggedToWordForTagAndSmiBits(a), \
BitcastTaggedToWordForTagAndSmiBits(b)); \
} else { \
DCHECK_EQ(kTaggedSize, kInt32Size); \
DCHECK(SmiValuesAre31Bits()); \
return Int32OpName( \
TruncateIntPtrToInt32(BitcastTaggedToWordForTagAndSmiBits(a)), \
TruncateIntPtrToInt32(BitcastTaggedToWordForTagAndSmiBits(b))); \
} \
}

Definition at line 498 of file code-stub-assembler.h.

◆ TVARIABLE

#define TVARIABLE ( ...)
Value:
EXPAND(TYPED_VARIABLE_DEF(__VA_ARGS__, this))
#define TYPED_VARIABLE_DEF(type, name,...)
#define EXPAND(X)
Definition macros.h:16

◆ TVARIABLE_CONSTRUCTOR

#define TVARIABLE_CONSTRUCTOR ( ...)
Value:
EXPAND(TYPED_VARIABLE_CONSTRUCTOR(__VA_ARGS__, this))
#define TYPED_VARIABLE_CONSTRUCTOR(name,...)

◆ TYPED_VARIABLE_CONSTRUCTOR

#define TYPED_VARIABLE_CONSTRUCTOR ( name,
... )
Value:
name(__VA_ARGS__)

◆ TYPED_VARIABLE_DEF

#define TYPED_VARIABLE_DEF ( type,
name,
... )
Value:
TVariable<UNPAREN(type)> name(__VA_ARGS__)
#define UNPAREN(X)
Definition macros.h:53

◆ V8_CODEGEN_CODE_STUB_ASSEMBLER_MACROS_DEFINED

#define V8_CODEGEN_CODE_STUB_ASSEMBLER_MACROS_DEFINED   1