mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:38:12 +00:00
LibJS: Implement bytecode generation for WithStatement
This commit is contained in:
parent
57386ca839
commit
2000251333
5 changed files with 38 additions and 0 deletions
|
@ -18,6 +18,7 @@
|
|||
#include <LibJS/Runtime/GlobalObject.h>
|
||||
#include <LibJS/Runtime/Iterator.h>
|
||||
#include <LibJS/Runtime/IteratorOperations.h>
|
||||
#include <LibJS/Runtime/ObjectEnvironment.h>
|
||||
#include <LibJS/Runtime/RegExpObject.h>
|
||||
#include <LibJS/Runtime/Value.h>
|
||||
|
||||
|
@ -274,6 +275,15 @@ ThrowCompletionOr<void> CreateEnvironment::execute_impl(Bytecode::Interpreter& i
|
|||
return {};
|
||||
}
|
||||
|
||||
ThrowCompletionOr<void> EnterObjectEnvironment::execute_impl(Bytecode::Interpreter& interpreter) const
|
||||
{
|
||||
auto& old_environment = interpreter.vm().running_execution_context().lexical_environment;
|
||||
interpreter.saved_lexical_environment_stack().append(old_environment);
|
||||
auto object = TRY(interpreter.accumulator().to_object(interpreter.global_object()));
|
||||
interpreter.vm().running_execution_context().lexical_environment = new_object_environment(*object, true, old_environment);
|
||||
return {};
|
||||
}
|
||||
|
||||
ThrowCompletionOr<void> CreateVariable::execute_impl(Bytecode::Interpreter& interpreter) const
|
||||
{
|
||||
auto& vm = interpreter.vm();
|
||||
|
@ -695,6 +705,11 @@ String CreateVariable::to_string_impl(Bytecode::Executable const& executable) co
|
|||
return String::formatted("CreateVariable env:{} immutable:{} {} ({})", mode_string, m_is_immutable, m_identifier, executable.identifier_table->get(m_identifier));
|
||||
}
|
||||
|
||||
String EnterObjectEnvironment::to_string_impl(const Executable&) const
|
||||
{
|
||||
return String::formatted("EnterObjectEnvironment");
|
||||
}
|
||||
|
||||
String SetVariable::to_string_impl(Bytecode::Executable const& executable) const
|
||||
{
|
||||
auto initialization_mode_name = m_initialization_mode == InitializationMode ::Initialize ? "Initialize"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue