ladybird/Tests/LibJS/Bytecode/input
Andreas Kling ecadf3ce21 LibJS: Inline AsyncIteratorClose with proper Await in for-await-of
The AsyncIteratorClose bytecode op calls async_iterator_close() which
uses synchronous await() internally. This spins the event loop while
execution contexts are on the stack, violating the microtask checkpoint
assertion in LibWeb.

Replace AsyncIteratorClose op emissions in for-await-of close handlers
with inline bytecode that uses the proper Await op, allowing the async
function to yield and resume naturally through the event loop.

For the non-throw path (break/return/continue-to-outer): emit
GetMethod, Call, Await, and ThrowIfNotObject inline.

For the throw path: wrap the close steps in an exception handler so
that any error from GetMethod/Call/Await is discarded and the original
exception is rethrown, per spec step 5.
2026-02-12 11:37:43 +01:00
..
annex-b-function-in-if.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
argument-variables.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
baseline.js
block-scoping.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
captured-variables.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
class-environment.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
class-literal-fields.js LibJS: Wire NewClass to ClassBlueprint 2026-02-11 23:57:41 +01:00
condition-dead-code-elim.js LibJS: Dead code elimination for always truthy/falsey conditions 2026-01-31 18:22:40 +01:00
const-fold-template-literals.js LibJS: Reduce number of template literal op codes 2026-01-31 18:24:02 +01:00
destructuring-assignment.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
eval-prevents-locals.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
eval-same-function.js LibJS: Stop propagating is_inside_scope_with_eval across functions 2026-01-27 10:58:39 +01:00
eval-scope-optimization.js LibJS: Stop propagating is_inside_scope_with_eval across functions 2026-01-27 10:58:39 +01:00
for-loop-scoping.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
for-of-iterator-close.js LibJS: Inline AsyncIteratorClose with proper Await in for-await-of 2026-02-12 11:37:43 +01:00
global-variables.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
local-variables.js Tests/LibJS: Add tests for scope analysis and destructuring 2026-02-10 02:05:20 +01:00
named-function-expression.js LibJS: Mark named function expression identifiers at individual level 2026-01-27 10:58:39 +01:00
sequential-try-blocks.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
switch-scoping.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
try-catch-scoping.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
try-finally-continue.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00
try-finally.js LibJS: Use explicit completion records for try/finally dispatch 2026-02-09 08:51:12 +01:00
with-statement.js LibJS: Replace implicit environment stack with explicit registers 2026-02-09 16:35:39 +01:00