Ver código fonte

LibWeb: Intentionally leak the main thread JS VM

This way we avoid doing an expensive full GC on exit.
Andreas Kling 2 anos atrás
pai
commit
d32f7112dc

+ 5 - 0
Userland/Libraries/LibWeb/Bindings/MainThreadVM.cpp

@@ -51,6 +51,11 @@ JS::VM& main_thread_vm()
     static RefPtr<JS::VM> vm;
     if (!vm) {
         vm = JS::VM::create(make<WebEngineCustomData>());
+
+        // NOTE: We intentionally leak the main thread JavaScript VM.
+        //       This avoids doing an exhaustive garbage collection on process exit.
+        vm->ref();
+
         static_cast<WebEngineCustomData*>(vm->custom_data())->event_loop.set_vm(*vm);
 
         // FIXME: Implement 8.1.5.1 HostEnsureCanCompileStrings(callerRealm, calleeRealm), https://html.spec.whatwg.org/multipage/webappapis.html#hostensurecancompilestrings(callerrealm,-calleerealm)