Skip to content

Commit

Permalink
refactor(transformer/arrow-functions): do not inline non-trivial visi…
Browse files Browse the repository at this point in the history
…tor method (#8321)

Follow-on after #8024. Don't inline `visit_statements` visitor method. This visitor is not so small, and always executes unconditionally. The compiler can decide whether to inline it or not. Where `#[inline]` is really valuable is:

1. Where the function is tiny so the cost of moving it into the caller is small. and
2. The function gets called a lot e.g. `visit_expression`, `visit_statement`, `visit_identifier_reference`.
3. Most commonly the function checks something and exits "nothing to do here". e.g. `visit_expression` where you only need to transform a particular type of `Expression`.
  • Loading branch information
overlookmotel committed Jan 8, 2025
1 parent ea9cefb commit 3dd08e9
Showing 1 changed file with 0 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -1137,7 +1137,6 @@ impl<'a> VisitMut<'a> for ConstructorBodyThisAfterSuperInserter<'a, '_> {
}

/// `super()` -> `super(); _this = this;`
#[inline]
fn visit_statements(&mut self, statements: &mut ArenaVec<'a, Statement<'a>>) {
let mut new_stmts = vec![];

Expand Down

0 comments on commit 3dd08e9

Please sign in to comment.