ladybird/Tests/LibJS/Runtime/modules
Andreas Kling 879ac36e45 LibJS: Cache stable for-in iteration at bytecode sites
Cache the flattened enumerable key snapshot for each `for..in` site and
reuse a `PropertyNameIterator` when the receiver shape, dictionary
generation, indexed storage kind and length, prototype chain
validity, and magical-length state still match.

Handle packed indexed receivers as well as plain named-property
objects. Teach `ObjectPropertyIteratorNext` in `asmint.asm` to return
cached property values directly and to fall back to the slow iterator
logic when any guard fails.

Treat arrays' hidden non-enumerable `length` property as a visited
name for for-in shadowing, and include the receiver's magical-length
state in the cache key so arrays and plain objects do not share
snapshots.

Add `test-js` and `test-js-bytecode` coverage for mixed numeric and
named keys, packed receiver transitions, re-entry, iterator reuse, GC
retention, array length shadowing, and same-site cache reuse.
2026-04-10 15:12:53 +02:00
..
submodule LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
accessing-lex-import-before-decl.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
accessing-var-import-before-decl.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
anon-func-decl-default-export.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
basic-export-types.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
basic-modules.js LibJS: Cache stable for-in iteration at bytecode sites 2026-04-10 15:12:53 +02:00
declarations-tests.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
default-and-star-export-indirect-string.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
default-and-star-export-indirect.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
default-and-star-export.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
default-export-named-class-expression.mjs LibJS: Fix export default of parenthesized named class expression 2026-02-21 19:27:03 +01:00
default-regexp-export.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
empty.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exporting-from-failing.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exporting-nothing-from-failing.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
failing.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
function-in-function.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
hoisted-var-export.mjs LibJS: Collect hoisted var declarations when checking module exports 2026-03-22 09:24:44 -05:00
import-with-attributes.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
importing-failing-module.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
indirect-export-without-default.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
json-module.json LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
json-module.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
json-modules.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loop-a.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loop-b.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loop-entry.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loop-self.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
module-with-default.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
multiple-star-imports.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
namespace-order.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
path-resolution.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
re-export-namespace-via-binding.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
single-const-export.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-import-names.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-import-namespace-indirect.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-import-namespace.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
top-level-dispose.mjs LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00