ladybird/Userland/Libraries/LibJS/Tests/async-this-value.js
Andreas Kling a91bb72dab LibJS: Don't overwrite cached this value on async/generator reentry
When resuming execution of a suspended function, we must not overwrite
any cached `this` value with something from the ExecutionContext.

This was causing an empty JS::Value to leak into the VM when resuming
an async arrow function, since the "this mode" for such functions is
lexical and thus ExecutionContext will have an empty `this`.

It became a problem due to the bytecode optimization where we allow
ourselves to assume that `this` remains cached after we've executed a
ResolveThisBinding in this (or the first) basic block of the executable.

Fixes https://github.com/LadybirdBrowser/ladybird/issues/138
2024-06-20 10:17:18 +02:00

8 lines
172 B
JavaScript

test("this value in async function", () => {
function X() {
this.boog = async () => {
this.f = await null;
};
}
new X().boog();
});