refactor(semantic): AstNodeParentIter fetch nodes lazily#4533
Merged
graphite-app[bot] merged 1 commit intomainfrom Jul 29, 2024
Merged
Conversation
840c04b to
7b5e1f5
Compare
Member
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @overlookmotel and the rest of your teammates on |
a09d739 to
1504ab8
Compare
Contributor
Your org has enabled the Graphite merge queue for merging into mainAdd the label “merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix. You must have a Graphite account and log in to Graphite in order to use the merge queue. Sign up using this link. |
CodSpeed Performance ReportMerging #4533 will not alter performanceComparing Summary
|
DonIsaac
approved these changes
Jul 29, 2024
Member
Author
|
Thanks for reviewing Don. |
Contributor
Merge activity
|
Refactor `AstNodeParentIter`, which is used to iterate down node ancestry chain. Fetch `AstNode` objects lazily, only when they're required by a `next()` call. If caller doesn't iterate all the way down the chain, likely this will result in 1 less array lookup.
1504ab8 to
d6974d4
Compare
Merged
Boshen
added a commit
that referenced
this pull request
Aug 1, 2024
## [0.23.0] - 2024-08-01 - 27fd062 sourcemap: [**BREAKING**] Avoid passing `Result`s (#4541) (overlookmotel) ### Features - a558492 codegen: Implement `BinaryExpressionVisitor` (#4548) (Boshen) - 7446e98 codegen: Align more esbuild implementations (#4510) (Boshen) - 35654e6 codegen: Align operator precedence with esbuild (#4509) (Boshen) - b952942 linter: Add eslint/no-unused-vars (⭐ attempt 3.2) (#4445) (DonIsaac) - 85e8418 linter: Add react/jsx-curly-brace-presence (#3949) (Don Isaac) - cf1854b semantic: Remove `ReferenceFlags::Value` from non-type-only exports that referenced type binding (#4511) (Dunqing) ### Bug Fixes - b58ed80 codegen: Enable more test cases (#4585) (Boshen) - 6a94e3f codegen: Fixes for esbuild test cases (#4503) (Boshen) - d5c4b19 parser: Fix enum member parsing (#4543) (DonIsaac) ### Performance - 4c6d19d allocator: Use capacity hint (#4584) (Luca Bruno) - 7585e16 linter: Remove allocations for string comparisons (#4570) (DonIsaac) - 55a8763 parser: Faster decoding unicode escapes in identifiers (#4579) (overlookmotel) - ae1d38f parser: Fast path for ASCII when checking char after numeric literal (#4577) (overlookmotel) - 56ae615 parser: Make not at EOF the hot path in `Source` methods (#4576) (overlookmotel) - 25679e6 parser: Optimize `Lexer::hex_digit` (#4572) (overlookmotel) - bb33bcc parser: Speed up lexing non-decimal numbers (#4571) (overlookmotel) - ab8509e parser: Use `-` not `saturating_sub` (#4561) (overlookmotel) - c9c38a1 parser: Support peeking over bytes (#4304) (lucab) - 0870ee1 parser: Get and check lookahead token (#4534) (lucab) - d00014e sourcemap: Elide bounds checks in VLQ encoding (#4583) (overlookmotel) - 1fd9dd0 sourcemap: Use simd to escape JSON string (#4487) (Brooooooklyn) ### Documentation - 0914e47 ast: Add doc comments to literal nodes (#4551) (DonIsaac) - c6a11be ast: Auto-generate doc comments for AstBuilder methods (#4471) (DonIsaac) ### Refactor - e68ed62 parser: Convert lexer byte handler for `|` to a single match (#4575) (overlookmotel) - bba824b parser: Convert `Lexer::read_minus` to a single match (#4574) (overlookmotel) - ef5418a parser: Convert `Lexer::read_left_angle` to a single match (#4573) (overlookmotel) - 9e5be78 parser: Add `Lexer::consume_2_chars` (#4569) (overlookmotel) - 649913e parser: Extract `u8` not `&u8` when iterating over bytes (#4568) (overlookmotel) - 59f00c0 parser: Rename function (#4566) (overlookmotel) - 8e3e910 parser: Rename vars (#4565) (overlookmotel) - 0c0601f parser: Rename function (#4564) (overlookmotel) - 0acc4a7 parser: Fetch 2 bytes in `?` byte handler (#4563) (overlookmotel) - 565eccf parser: Shorten lexer code (#4562) (overlookmotel) - 148bdb5 parser: Adjust function inlining (#4530) (overlookmotel) - 16c7b98 semantic: Move CatchClause scope binding logic to visit_block_statement (#4505) (Dunqing) - d6974d4 semantic: `AstNodeParentIter` fetch nodes lazily (#4533) (overlookmotel) - d914b14 semantic: Reusing the same reference (#4529) (Dunqing) - 7b5e1f5 semantic: Use `is_empty()` instead of `len() == 0` (#4532) (overlookmotel) - 9db4259 semantic: Inline trivial methods (#4531) (overlookmotel) - 7c42ffc sourcemap: Align Base64 chars lookup table to cache line (#4535) (overlookmotel) - 96602bf transformer/typescript: Determine whether to remove `ExportSpeicifer` by `ReferenceFlags` (#4513) (Dunqing) - e6a8af6 traverse: Speed up tests (#4538) (overlookmotel) Co-authored-by: Boshen <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Refactor
AstNodeParentIter, which is used to iterate down node ancestry chain. FetchAstNodeobjects lazily, only when they're required by anext()call. If caller doesn't iterate all the way down the chain, likely this will result in 1 less array lookup.