Scopes: Use unsigned VLQ (1-based) for binding expressions #205
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As discussed in the meeting of 2025-04-24, this PR changes the binding expressions from a signed VLQ to a unsigned VLQ. To signify a variable is unavailable in a given generated (sub) range, we use
0
instead of-1
and the indices themselves are now 1-based instead of 0-based. This is necessary to free up0
as the "unavailability marker".To capture some of the points of the meeting here (also available in the notes):
names
array would require us to sacrifice an additional bit to signify "unavailability".0
as the marker and make positive relative indices "off by one". E.g. "0" means a variable is unavailable, "1" means a variable uses the same binding expression as the previous variable and "2" means it uses the next entry in "names".