LibJS: Cache rejected/fulfilled callbacks in AsyncFunctionDriverWrapper

Saves us two NativeFunction allocations per each `await`.

With this change, following function goes 80% faster on my computer:
```js
(async () => {
    const resolved = Promise.resolve();
    for (let i = 0; i < 5_000_000; i++) {
        await resolved;
    }
})();
```
This commit is contained in:
Aliaksandr Kalenik
2025-05-09 04:57:02 +03:00
committed by Andreas Kling
parent 4c789ac689
commit 6530f55f34
Notes: github-actions[bot] 2025-05-09 10:31:10 +00:00
2 changed files with 10 additions and 3 deletions

View File

@@ -34,6 +34,9 @@ private:
GC::Ref<Promise> m_top_level_promise;
GC::Ptr<Promise> m_current_promise { nullptr };
OwnPtr<ExecutionContext> m_suspended_execution_context;
GC::Ptr<NativeFunction> m_on_fulfilled;
GC::Ptr<NativeFunction> m_on_rejected;
};
}