mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-07 00:19:27 +00:00
LibJS/JIT: Store the running ExecutionContext& in a dedicated register
This commit is contained in:
parent
5479bb6ac9
commit
e1e7e696ac
|
@ -2061,6 +2061,10 @@ OwnPtr<NativeExecutable> Compiler::compile(Bytecode::Executable& bytecode_execut
|
|||
Assembler::Operand::Register(LOCALS_ARRAY_BASE),
|
||||
Assembler::Operand::Register(ARG2));
|
||||
|
||||
compiler.m_assembler.mov(
|
||||
Assembler::Operand::Register(RUNNING_EXECUTION_CONTEXT_BASE),
|
||||
Assembler::Operand::Register(ARG4));
|
||||
|
||||
compiler.reload_cached_accumulator();
|
||||
|
||||
Assembler::Label normal_entry {};
|
||||
|
|
|
@ -38,6 +38,7 @@ private:
|
|||
static constexpr auto REGISTER_ARRAY_BASE = Assembler::Reg::RBX;
|
||||
static constexpr auto LOCALS_ARRAY_BASE = Assembler::Reg::R14;
|
||||
static constexpr auto CACHED_ACCUMULATOR = Assembler::Reg::R13;
|
||||
static constexpr auto RUNNING_EXECUTION_CONTEXT_BASE = Assembler::Reg::R15;
|
||||
# endif
|
||||
|
||||
# define JS_ENUMERATE_COMMON_BINARY_OPS_WITHOUT_FAST_PATH(O) \
|
||||
|
|
|
@ -43,11 +43,12 @@ void NativeExecutable::run(VM& vm, size_t entry_point) const
|
|||
VERIFY(entry_point_address != 0);
|
||||
}
|
||||
|
||||
typedef void (*JITCode)(VM&, Value* registers, Value* locals, FlatPtr entry_point_address);
|
||||
typedef void (*JITCode)(VM&, Value* registers, Value* locals, FlatPtr entry_point_address, ExecutionContext&);
|
||||
((JITCode)m_code)(vm,
|
||||
vm.bytecode_interpreter().registers().data(),
|
||||
vm.running_execution_context().local_variables.data(),
|
||||
entry_point_address);
|
||||
entry_point_address,
|
||||
vm.running_execution_context());
|
||||
}
|
||||
|
||||
#if ARCH(X86_64)
|
||||
|
|
Loading…
Reference in a new issue