mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:37:37 +00:00
LibJS/JIT: Store the running ExecutionContext& in a dedicated register
This commit is contained in:
parent
5479bb6ac9
commit
e1e7e696ac
3 changed files with 8 additions and 2 deletions
|
@ -2061,6 +2061,10 @@ OwnPtr<NativeExecutable> Compiler::compile(Bytecode::Executable& bytecode_execut
|
||||||
Assembler::Operand::Register(LOCALS_ARRAY_BASE),
|
Assembler::Operand::Register(LOCALS_ARRAY_BASE),
|
||||||
Assembler::Operand::Register(ARG2));
|
Assembler::Operand::Register(ARG2));
|
||||||
|
|
||||||
|
compiler.m_assembler.mov(
|
||||||
|
Assembler::Operand::Register(RUNNING_EXECUTION_CONTEXT_BASE),
|
||||||
|
Assembler::Operand::Register(ARG4));
|
||||||
|
|
||||||
compiler.reload_cached_accumulator();
|
compiler.reload_cached_accumulator();
|
||||||
|
|
||||||
Assembler::Label normal_entry {};
|
Assembler::Label normal_entry {};
|
||||||
|
|
|
@ -38,6 +38,7 @@ private:
|
||||||
static constexpr auto REGISTER_ARRAY_BASE = Assembler::Reg::RBX;
|
static constexpr auto REGISTER_ARRAY_BASE = Assembler::Reg::RBX;
|
||||||
static constexpr auto LOCALS_ARRAY_BASE = Assembler::Reg::R14;
|
static constexpr auto LOCALS_ARRAY_BASE = Assembler::Reg::R14;
|
||||||
static constexpr auto CACHED_ACCUMULATOR = Assembler::Reg::R13;
|
static constexpr auto CACHED_ACCUMULATOR = Assembler::Reg::R13;
|
||||||
|
static constexpr auto RUNNING_EXECUTION_CONTEXT_BASE = Assembler::Reg::R15;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define JS_ENUMERATE_COMMON_BINARY_OPS_WITHOUT_FAST_PATH(O) \
|
# 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);
|
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,
|
((JITCode)m_code)(vm,
|
||||||
vm.bytecode_interpreter().registers().data(),
|
vm.bytecode_interpreter().registers().data(),
|
||||||
vm.running_execution_context().local_variables.data(),
|
vm.running_execution_context().local_variables.data(),
|
||||||
entry_point_address);
|
entry_point_address,
|
||||||
|
vm.running_execution_context());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ARCH(X86_64)
|
#if ARCH(X86_64)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue