mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 17:55:07 +02:00
LibJS: Don't run promise and cleanup jobs in Interpreter::run
https://tc39.es/ecma262/#sec-jobs specifies that we should only be running queued promise jobs and host-defined cleanup when the execution context stack is empty. It is asserted to _not_ be empty the line above, so remove it. No impact on test262 or our test suites, Interpreter::run_executable is already (incorrectly) performing this unconditionally. run_promise_jobs also happens to do nothing when LibJS is embedded into LibWeb.
This commit is contained in:
committed by
Andreas Kling
parent
43defa90cc
commit
286a9d8101
Notes:
github-actions[bot]
2025-05-09 07:36:46 +00:00
Author: https://github.com/shannonbooth Commit: https://github.com/LadybirdBrowser/ladybird/commit/286a9d81010 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4666
@@ -303,14 +303,6 @@ ThrowCompletionOr<Value> Interpreter::run(Script& script_record, GC::Ptr<Environ
|
||||
|
||||
// FIXME: 16. Resume the context that is now on the top of the execution context stack as the running execution context.
|
||||
|
||||
// FIXME: These three should be moved out of Interpreter::run and give the host an option to run these, as it's up to the host when these get run.
|
||||
// https://tc39.es/ecma262/#sec-jobs for jobs and https://tc39.es/ecma262/#_ref_3508 for ClearKeptObjects
|
||||
// finish_execution_generation is particularly an issue for LibWeb, as the HTML spec wants to run it specifically after performing a microtask checkpoint.
|
||||
// The promise and registry cleanup queues don't cause LibWeb an issue, as LibWeb overrides the hooks that push onto these queues.
|
||||
vm.run_queued_promise_jobs();
|
||||
|
||||
vm.run_queued_finalization_registry_cleanup_jobs();
|
||||
|
||||
vm.finish_execution_generation();
|
||||
|
||||
// 17. Return ? result.
|
||||
|
||||
Reference in New Issue
Block a user