Ver Fonte

LibJS: Add method to VM to clear the execution context stack

This is needed for the spin the event loop AO in LibWeb
Andrew Kaster há 1 ano atrás
pai
commit
aef5932235

+ 5 - 0
Userland/Libraries/LibJS/Runtime/VM.cpp

@@ -742,6 +742,11 @@ void VM::save_execution_context_stack()
     m_saved_execution_context_stacks.append(move(m_execution_context_stack));
 }
 
+void VM::clear_execution_context_stack()
+{
+    m_execution_context_stack.clear_with_capacity();
+}
+
 void VM::restore_execution_context_stack()
 {
     m_execution_context_stack = m_saved_execution_context_stacks.take_last();

+ 1 - 0
Userland/Libraries/LibJS/Runtime/VM.h

@@ -229,6 +229,7 @@ public:
     ThrowCompletionOr<Value> named_evaluation_if_anonymous_function(ASTNode const& expression, DeprecatedFlyString const& name);
 
     void save_execution_context_stack();
+    void clear_execution_context_stack();
     void restore_execution_context_stack();
 
     // Do not call this method unless you are sure this is the only and first module to be loaded in this vm.