Explorar o código

LibJS: Make BlockDeclarationInstantiation take a VM&

There's no need for this to require an AST Interpreter.
Andreas Kling %!s(int64=2) %!d(string=hai) anos
pai
achega
4684d3fe54
Modificáronse 2 ficheiros con 4 adicións e 5 borrados
  1. 3 4
      Userland/Libraries/LibJS/AST.cpp
  2. 1 1
      Userland/Libraries/LibJS/AST.h

+ 3 - 4
Userland/Libraries/LibJS/AST.cpp

@@ -246,7 +246,7 @@ Completion BlockStatement::execute(Interpreter& interpreter) const
 
     old_environment = vm.running_execution_context().lexical_environment;
     auto block_environment = new_declarative_environment(*old_environment);
-    block_declaration_instantiation(interpreter, block_environment);
+    block_declaration_instantiation(vm, block_environment);
     vm.running_execution_context().lexical_environment = block_environment;
 
     // 5. Let blockValue be the result of evaluating StatementList.
@@ -4309,7 +4309,7 @@ Completion SwitchStatement::execute_impl(Interpreter& interpreter) const
         auto block_environment = new_declarative_environment(*old_environment);
 
         // 5. Perform BlockDeclarationInstantiation(CaseBlock, blockEnv).
-        block_declaration_instantiation(interpreter, block_environment);
+        block_declaration_instantiation(vm, block_environment);
 
         // 6. Set the running execution context's LexicalEnvironment to blockEnv.
         vm.running_execution_context().lexical_environment = block_environment;
@@ -4729,10 +4729,9 @@ bool ImportStatement::has_bound_name(DeprecatedFlyString const& name) const
 }
 
 // 14.2.3 BlockDeclarationInstantiation ( code, env ), https://tc39.es/ecma262/#sec-blockdeclarationinstantiation
-void ScopeNode::block_declaration_instantiation(Interpreter& interpreter, Environment* environment) const
+void ScopeNode::block_declaration_instantiation(VM& vm, Environment* environment) const
 {
     // See also B.3.2.6 Changes to BlockDeclarationInstantiation, https://tc39.es/ecma262/#sec-web-compat-blockdeclarationinstantiation
-    auto& vm = interpreter.vm();
     auto& realm = *vm.current_realm();
 
     VERIFY(environment);

+ 1 - 1
Userland/Libraries/LibJS/AST.h

@@ -313,7 +313,7 @@ public:
     ThrowCompletionOr<void> for_each_var_function_declaration_in_reverse_order(ThrowCompletionOrVoidCallback<FunctionDeclaration const&>&& callback) const;
     ThrowCompletionOr<void> for_each_var_scoped_variable_declaration(ThrowCompletionOrVoidCallback<VariableDeclaration const&>&& callback) const;
 
-    void block_declaration_instantiation(Interpreter&, Environment*) const;
+    void block_declaration_instantiation(VM&, Environment*) const;
 
     ThrowCompletionOr<void> for_each_function_hoistable_with_annexB_extension(ThrowCompletionOrVoidCallback<FunctionDeclaration&>&& callback) const;