|
@@ -18,6 +18,7 @@
|
|
#include <LibJS/Runtime/GlobalObject.h>
|
|
#include <LibJS/Runtime/GlobalObject.h>
|
|
#include <LibJS/Runtime/Iterator.h>
|
|
#include <LibJS/Runtime/Iterator.h>
|
|
#include <LibJS/Runtime/IteratorOperations.h>
|
|
#include <LibJS/Runtime/IteratorOperations.h>
|
|
|
|
+#include <LibJS/Runtime/ObjectEnvironment.h>
|
|
#include <LibJS/Runtime/RegExpObject.h>
|
|
#include <LibJS/Runtime/RegExpObject.h>
|
|
#include <LibJS/Runtime/Value.h>
|
|
#include <LibJS/Runtime/Value.h>
|
|
|
|
|
|
@@ -274,6 +275,15 @@ ThrowCompletionOr<void> CreateEnvironment::execute_impl(Bytecode::Interpreter& i
|
|
return {};
|
|
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
|
|
ThrowCompletionOr<void> CreateVariable::execute_impl(Bytecode::Interpreter& interpreter) const
|
|
{
|
|
{
|
|
auto& vm = interpreter.vm();
|
|
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));
|
|
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
|
|
String SetVariable::to_string_impl(Bytecode::Executable const& executable) const
|
|
{
|
|
{
|
|
auto initialization_mode_name = m_initialization_mode == InitializationMode ::Initialize ? "Initialize"
|
|
auto initialization_mode_name = m_initialization_mode == InitializationMode ::Initialize ? "Initialize"
|