mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-28 07:18:51 +00:00
LibJS: Avoid emptying the return value register in try/finally
This works because at the end of the finally chunk, a ContinuePendingUnwind is generated which copies the saved return value register into the return value register. In cases where ContinuePendingUnwind is not generated such as when there is a break statement in the finally block, the fonction will return undefined which is consistent with V8 and SpiderMonkey.
This commit is contained in:
parent
fbdabace8e
commit
6b6e13e28c
Notes:
github-actions[bot]
2025-03-27 12:19:55 +00:00
Author: https://github.com/ananas-dev
Commit: 6b6e13e28c
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4115
3 changed files with 14 additions and 6 deletions
|
@ -778,8 +778,6 @@ Interpreter::ResultAndReturnRegister Interpreter::run_executable(Executable& exe
|
|||
auto return_value = js_undefined();
|
||||
if (!reg(Register::return_value()).is_empty())
|
||||
return_value = reg(Register::return_value());
|
||||
else if (!reg(Register::saved_return_value()).is_empty())
|
||||
return_value = reg(Register::saved_return_value());
|
||||
auto exception = reg(Register::exception());
|
||||
|
||||
vm().run_queued_promise_jobs();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue