Files
ladybird/Libraries/LibJS/Rust/Cargo.toml
Andreas Kling c1bc0cdfa9 LibJS: Allocate local variable indices in source order
The scope collector stored identifier_groups and variables in
HashMaps and then sorted them alphabetically before assigning local
register indices. The sorts existed only because HashMap iteration
order is non-deterministic; alphabetical was a stable choice for
comparing bytecode against the now-removed C++ port.

Switch both maps to indexmap::IndexMap so iteration follows the order
of first reference (= source order), and drop the alphabetical sorts.
Local indices now reflect declaration order, which matches what shows
up in bytecode dumps and is easier to read alongside the source.

Add a focused bytecode test using zebra/yak/aardvark to pin the new
allocation order; existing tests using let/var declarations have
their local indices renumbered to match.
2026-04-27 08:04:11 +02:00

24 lines
496 B
TOML

[package]
name = "libjs_rust"
version = "0.1.0"
edition = "2024"
[lib]
crate-type = ["staticlib"]
# After changing dependencies, regenerate the Flatpak sources:
# python3 Meta/CMake/flatpak/generate-cargo-sources.py
[dependencies]
libunicode_rust = { path = "../../LibUnicode/Rust", default-features = false }
num-bigint = "0.4"
num-traits = "0.2"
num-integer = "0.1"
indexmap = "2"
[build-dependencies]
bytecode_def = { path = "../BytecodeDef" }
cbindgen = "0.29"
[lints]
workspace = true