mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 21:08:12 +00:00
LibJS: More properly implement scoping rules in bytecode codegen
Now we emit CreateVariable and SetVariable with the appropriate initialization/environment modes, much closer to the spec. This makes a whole lot of things like let/const variables, function and variable hoisting and some other things work :^)
This commit is contained in:
parent
c7e6b65fd2
commit
1bbfaf8627
12 changed files with 503 additions and 38 deletions
|
@ -97,7 +97,7 @@ ThrowCompletionOr<Value> GeneratorObject::next_impl(VM& vm, GlobalObject& global
|
|||
VERIFY(!m_generating_function->bytecode_executable()->basic_blocks.find_if([next_block](auto& block) { return block == next_block; }).is_end());
|
||||
|
||||
// Restore the snapshot registers
|
||||
bytecode_interpreter->enter_frame(m_frame);
|
||||
bytecode_interpreter->enter_frame(*m_frame);
|
||||
|
||||
// Temporarily switch to the captured execution context
|
||||
TRY(vm.push_execution_context(m_execution_context, global_object));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue