mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-26 19:29:16 +00:00
LibJS/Bytecode: Allow all basic blocks to use cached this from block 0
The first block in every executable will always execute first, so if it ends up doing a ResolveThisBinding, it's fine for all other blocks within the same executable to use the same `this` value.
This commit is contained in:
@@ -802,6 +802,10 @@ Operand Generator::get_this(Optional<Operand> preferred_dst)
|
||||
{
|
||||
if (m_current_basic_block->this_().has_value())
|
||||
return m_current_basic_block->this_().value();
|
||||
if (m_root_basic_blocks[0]->this_().has_value()) {
|
||||
m_current_basic_block->set_this(m_root_basic_blocks[0]->this_().value());
|
||||
return m_root_basic_blocks[0]->this_().value();
|
||||
}
|
||||
auto dst = preferred_dst.has_value() ? preferred_dst.value() : Operand(allocate_register());
|
||||
emit<Bytecode::Op::ResolveThisBinding>(dst);
|
||||
m_current_basic_block->set_this(dst);
|
||||
|
||||
Reference in New Issue
Block a user