refactor(transformer/arrow-functions): pass ArenaBox as function param (#7169)

Follow-on after stack up to #7148.

Small optimization. `ArrowFunctionExpression` is 56 bytes, whereas `ArenaBox<ArrowFunctionExpression>` is 8 bytes. So it's preferable to pass the `ArenaBox<ArrowFunctionExpression>` to `transform_arrow_function_expression` and call `unbox` on it there instead of unboxing *before* passing to the function.
This commit is contained in:
overlookmotel 2024-11-06 14:08:14 +00:00
parent 38a6df6f66
commit c307e1b7e8

View file

@ -277,7 +277,7 @@ impl<'a> Traverse<'a> for ArrowFunctionConverter<'a> {
unreachable!()
};
*expr = Self::transform_arrow_function_expression(arrow_function_expr.unbox(), ctx);
*expr = Self::transform_arrow_function_expression(arrow_function_expr, ctx);
}
}
}
@ -414,9 +414,10 @@ impl<'a> ArrowFunctionConverter<'a> {
}
fn transform_arrow_function_expression(
arrow_function_expr: ArrowFunctionExpression<'a>,
arrow_function_expr: ArenaBox<'a, ArrowFunctionExpression<'a>>,
ctx: &mut TraverseCtx<'a>,
) -> Expression<'a> {
let arrow_function_expr = arrow_function_expr.unbox();
let scope_id = arrow_function_expr.scope_id();
let flags = ctx.scopes_mut().get_flags_mut(scope_id);
*flags &= !ScopeFlags::Arrow;