mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:38:12 +00:00
LibJS/JIT: Support alternative entry point blocks
If Interpreter::run_and_return_frame is called with a specific entry point we now map that to a native instruction address, which the JIT code jumps to after the function prologue.
This commit is contained in:
parent
38f3b78a1d
commit
e400682fb1
4 changed files with 46 additions and 5 deletions
|
@ -367,7 +367,10 @@ Interpreter::ValueAndFrame Interpreter::run_and_return_frame(Executable& executa
|
|||
vm().execution_context_stack().last()->executable = &executable;
|
||||
|
||||
if (auto native_executable = executable.get_or_create_native_executable()) {
|
||||
native_executable->run(vm());
|
||||
auto block_index = 0;
|
||||
if (entry_point)
|
||||
block_index = executable.basic_blocks.find_first_index_if([&](auto const& block) { return block.ptr() == entry_point; }).value();
|
||||
native_executable->run(vm(), block_index);
|
||||
|
||||
#if 0
|
||||
for (size_t i = 0; i < vm().running_execution_context().local_variables.size(); ++i) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue