v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
interpreter-generator.cc File Reference
Include dependency graph for interpreter-generator.cc:

Go to the source code of this file.

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::interpreter
 

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 IGNITION_HANDLER(Name, BaseAssembler)
 
#define MAKE_LABEL(name, lower_case)
 
#define LABEL_POINTER(name, lower_case)
 
#define CASE(name, lower_case)
 
#define DEBUG_BREAK(Name, ...)
 
#define CALL_GENERATOR(Name, ...)
 
#define CALL_GENERATOR_TS(Name, ...)
 

Functions

void v8::internal::interpreter::BitwiseNotAssemblerTS_Generate (compiler::turboshaft::PipelineData *data, Isolate *isolate, compiler::turboshaft::Graph &graph, Zone *zone)
 
void v8::internal::interpreter::GenerateBytecodeHandler (compiler::CodeAssemblerState *state, Bytecode bytecode, OperandScale operand_scale)
 

Macro Definition Documentation

◆ BIND

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

◆ CALL_GENERATOR

#define CALL_GENERATOR ( Name,
... )
Value:
case Bytecode::k##Name: \
Name##Assembler::Generate(state, operand_scale); \
break;

◆ CALL_GENERATOR_TS

#define CALL_GENERATOR_TS ( Name,
... )
Value:
/* FIXME(348031042): This doesn't compile since the \
* CodeAssemblerCompilationJob refactor. */ \
case Bytecode::k##Name: \
code = compiler::turboshaft::BuildWithTurboshaftAssemblerImpl( \
isolate, builtin, &Name##AssemblerTS_Generate, descriptor_builder, \
debug_name, options, CodeKind::BYTECODE_HANDLER, \
BytecodeHandlerData(bytecode, operand_scale)); \
break;

◆ CASE

#define CASE ( name,
lower_case )
Value:
static_cast<int32_t>(TestTypeOfFlags::LiteralFlag::k##name),
const char * name
Definition builtins.cc:39

◆ 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)

◆ DEBUG_BREAK

#define DEBUG_BREAK ( Name,
... )
Value:
IGNITION_HANDLER(Name, InterpreterAssembler) { \
TNode<Context> context = GetContext(); \
TNode<Object> accumulator = GetAccumulator(); \
TNode<PairT<Object, Smi>> result_pair = CallRuntime<PairT<Object, Smi>>( \
Runtime::kDebugBreakOnBytecode, context, accumulator); \
TNode<Object> return_value = Projection<0>(result_pair); \
TNode<IntPtrT> original_bytecode = SmiUntag(Projection<1>(result_pair)); \
SetAccumulator(return_value); \
DispatchToBytecodeWithOptionalStarLookahead(original_bytecode); \
}
#define IGNITION_HANDLER(Name, BaseAssembler)
TNode< Context > context

Definition at line 3090 of file interpreter-generator.cc.

◆ IGNITION_HANDLER

#define IGNITION_HANDLER ( Name,
BaseAssembler )
Value:
class Name##Assembler : public BaseAssembler { \
public: \
explicit Name##Assembler(compiler::CodeAssemblerState* state, \
Bytecode bytecode, OperandScale scale) \
: BaseAssembler(state, bytecode, scale) {} \
Name##Assembler(const Name##Assembler&) = delete; \
Name##Assembler& operator=(const Name##Assembler&) = delete; \
static void Generate(compiler::CodeAssemblerState* state, \
OperandScale scale); \
\
private: \
void GenerateImpl(); \
}; \
void Name##Assembler::Generate(compiler::CodeAssemblerState* state, \
OperandScale scale) { \
Name##Assembler assembler(state, Bytecode::k##Name, scale); \
state->SetInitialDebugInformation(#Name, __FILE__, __LINE__); \
assembler.GenerateImpl(); \
} \
void Name##Assembler::GenerateImpl()
interpreter::OperandScale scale
Definition builtins.cc:44
AssemblerT assembler

Definition at line 45 of file interpreter-generator.cc.

◆ LABEL_POINTER

#define LABEL_POINTER ( name,
lower_case )
Value:
&if_##lower_case,

◆ MAKE_LABEL

#define MAKE_LABEL ( name,
lower_case )
Value:
Label if_##lower_case(this);

◆ 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