5#ifndef V8_INTERPRETER_INTERPRETER_H_
6#define V8_INTERPRETER_INTERPRETER_H_
20class AccountingAllocator;
23class UnoptimizedCompilationJob;
25class IgnitionStatisticsTester;
30class SetupIsolateDelegate;
34namespace interpreter {
36class InterpreterAssembler;
51 std::vector<FunctionLiteral*>* eager_inner_literals,
56 static std::unique_ptr<UnoptimizedCompilationJob>
89 return reinterpret_cast<Address>(
116#ifdef V8_IGNITION_DISPATCH_COUNTING
117#define V8_IGNITION_DISPATCH_COUNTING_BOOL true
119#define V8_IGNITION_DISPATCH_COUNTING_BOOL false
static const int kOperandScaleCount
static std::unique_ptr< UnoptimizedCompilationJob > NewSourcePositionCollectionJob(ParseInfo *parse_info, FunctionLiteral *literal, Handle< BytecodeArray > existing_bytecode, AccountingAllocator *allocator, LocalIsolate *local_isolate)
V8_EXPORT_PRIVATE void InitDispatchCounters()
void ForEachBytecode(const std::function< void(Bytecode, OperandScale)> &f)
static const int kNumberOfWideVariants
void SetBytecodeHandler(Bytecode bytecode, OperandScale operand_scale, Tagged< Code > handler)
Address interpreter_entry_trampoline_instruction_start_
static size_t GetDispatchTableIndex(Bytecode bytecode, OperandScale operand_scale)
virtual ~Interpreter()=default
Address address_of_interpreter_entry_trampoline_instruction_start() const
static const int kNumberOfBytecodes
V8_EXPORT_PRIVATE DirectHandle< JSObject > GetDispatchCountersObject()
Address dispatch_table_[kDispatchTableSize]
static std::unique_ptr< UnoptimizedCompilationJob > NewCompilationJob(ParseInfo *parse_info, FunctionLiteral *literal, Handle< Script > script, AccountingAllocator *allocator, std::vector< FunctionLiteral * > *eager_inner_literals, LocalIsolate *local_isolate)
static const int kDispatchTableSize
Address bytecode_dispatch_counters_table()
friend class v8::internal::IgnitionStatisticsTester
Address dispatch_table_address()
friend class SetupInterpreter
Interpreter(const Interpreter &)=delete
std::unique_ptr< uintptr_t[]> bytecode_dispatch_counters_table_
V8_EXPORT_PRIVATE Tagged< Code > GetBytecodeHandler(Bytecode bytecode, OperandScale operand_scale)
Interpreter & operator=(const Interpreter &)=delete
bool IsDispatchTableInitialized() const
V8_EXPORT_PRIVATE uintptr_t GetDispatchCounter(Bytecode from, Bytecode to) const
Interpreter(Isolate *isolate)
FunctionLiteral * literal
#define V8_EXPORT_PRIVATE