Skip to content

Commit 02f9bd2

Browse files
committed
[naga] Hoist ConstantEvaluator construction in process_function.
There's no need to build a fresh `ConstantEvaluator` for every expression; just build it once and reuse it.
1 parent 95ec65f commit 02f9bd2

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

naga/src/back/pipeline_constants.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -282,18 +282,18 @@ fn process_function(
282282
let mut emitter = Emitter::default();
283283
let mut block = Block::new();
284284

285-
for (old_h, expr, span) in expressions.drain() {
286-
let mut expr = match expr {
287-
Expression::Override(h) => Expression::Constant(override_map[h.index()]),
288-
expr => expr,
289-
};
290-
let mut evaluator = ConstantEvaluator::for_wgsl_function(
291-
module,
292-
&mut function.expressions,
293-
&mut local_expression_kind_tracker,
294-
&mut emitter,
295-
&mut block,
296-
);
285+
let mut evaluator = ConstantEvaluator::for_wgsl_function(
286+
module,
287+
&mut function.expressions,
288+
&mut local_expression_kind_tracker,
289+
&mut emitter,
290+
&mut block,
291+
);
292+
293+
for (old_h, mut expr, span) in expressions.drain() {
294+
if let Expression::Override(h) = expr {
295+
expr = Expression::Constant(override_map[h.index()]);
296+
}
297297
adjust_expr(&adjusted_local_expressions, &mut expr);
298298
let h = evaluator.try_eval_and_append(expr, span)?;
299299
debug_assert_eq!(old_h.index(), adjusted_local_expressions.len());

0 commit comments

Comments
 (0)