Skip to content

Commit 6dd2423

Browse files
committed
rename ExpressionConstnessTracker to ExpressionKindTracker
1 parent 6c6445b commit 6dd2423

File tree

10 files changed

+53
-56
lines changed

10 files changed

+53
-56
lines changed

naga/src/back/pipeline_constants.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pub(super) fn process_overrides<'a>(
3636
let mut adjusted_const_expressions = Vec::with_capacity(module.const_expressions.len());
3737
let mut adjusted_constant_initializers = HashSet::with_capacity(module.constants.len());
3838

39-
let mut global_expression_kind_tracker = crate::proc::ExpressionConstnessTracker::new();
39+
let mut global_expression_kind_tracker = crate::proc::ExpressionKindTracker::new();
4040

4141
let mut override_iter = module.overrides.drain();
4242

@@ -122,7 +122,7 @@ fn process_override(
122122
override_map: &mut Vec<Handle<Constant>>,
123123
adjusted_const_expressions: &[Handle<Expression>],
124124
adjusted_constant_initializers: &mut HashSet<Handle<Constant>>,
125-
global_expression_kind_tracker: &mut crate::proc::ExpressionConstnessTracker,
125+
global_expression_kind_tracker: &mut crate::proc::ExpressionKindTracker,
126126
) -> Result<Handle<Constant>, PipelineConstantError> {
127127
let key = if let Some(id) = override_.id {
128128
Cow::Owned(id.to_string())

naga/src/front/glsl/context.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,17 @@ pub struct Context<'a> {
7878
pub module: &'a mut crate::Module,
7979
pub is_const: bool,
8080
/// Tracks the expression kind of `Expression`s residing in `self.expressions`
81-
pub local_expression_kind_tracker: crate::proc::ExpressionConstnessTracker,
81+
pub local_expression_kind_tracker: crate::proc::ExpressionKindTracker,
8282
/// Tracks the expression kind of `Expression`s residing in `self.module.const_expressions`
83-
pub global_expression_kind_tracker: &'a mut crate::proc::ExpressionConstnessTracker,
83+
pub global_expression_kind_tracker: &'a mut crate::proc::ExpressionKindTracker,
8484
}
8585

8686
impl<'a> Context<'a> {
8787
pub fn new(
8888
frontend: &Frontend,
8989
module: &'a mut crate::Module,
9090
is_const: bool,
91-
global_expression_kind_tracker: &'a mut crate::proc::ExpressionConstnessTracker,
91+
global_expression_kind_tracker: &'a mut crate::proc::ExpressionKindTracker,
9292
) -> Result<Self> {
9393
let mut this = Context {
9494
expressions: Arena::new(),
@@ -108,7 +108,7 @@ impl<'a> Context<'a> {
108108
body: Block::new(),
109109
module,
110110
is_const: false,
111-
local_expression_kind_tracker: crate::proc::ExpressionConstnessTracker::new(),
111+
local_expression_kind_tracker: crate::proc::ExpressionKindTracker::new(),
112112
global_expression_kind_tracker,
113113
};
114114

naga/src/front/glsl/parser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ impl<'source> ParsingContext<'source> {
164164

165165
pub fn parse(&mut self, frontend: &mut Frontend) -> Result<Module> {
166166
let mut module = Module::default();
167-
let mut global_expression_kind_tracker = crate::proc::ExpressionConstnessTracker::new();
167+
let mut global_expression_kind_tracker = crate::proc::ExpressionKindTracker::new();
168168

169169
// Body and expression arena for global initialization
170170
let mut ctx = Context::new(
@@ -229,7 +229,7 @@ impl<'source> ParsingContext<'source> {
229229
&mut self,
230230
frontend: &mut Frontend,
231231
module: &mut Module,
232-
global_expression_kind_tracker: &mut crate::proc::ExpressionConstnessTracker,
232+
global_expression_kind_tracker: &mut crate::proc::ExpressionKindTracker,
233233
) -> Result<(Handle<Expression>, Span)> {
234234
let mut ctx = Context::new(frontend, module, true, global_expression_kind_tracker)?;
235235

naga/src/front/wgsl/lower/mod.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ pub struct GlobalContext<'source, 'temp, 'out> {
8787

8888
const_typifier: &'temp mut Typifier,
8989

90-
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionConstnessTracker,
90+
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionKindTracker,
9191
}
9292

9393
impl<'source> GlobalContext<'source, '_, '_> {
@@ -179,8 +179,8 @@ pub struct StatementContext<'source, 'temp, 'out> {
179179
/// with the form of the expressions; it is also tracking whether WGSL says
180180
/// we should consider them to be const. See the use of `force_non_const` in
181181
/// the code for lowering `let` bindings.
182-
expression_constness: &'temp mut crate::proc::ExpressionConstnessTracker,
183-
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionConstnessTracker,
182+
local_expression_kind_tracker: &'temp mut crate::proc::ExpressionKindTracker,
183+
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionKindTracker,
184184
}
185185

186186
impl<'a, 'temp> StatementContext<'a, 'temp, '_> {
@@ -205,7 +205,7 @@ impl<'a, 'temp> StatementContext<'a, 'temp, '_> {
205205
block,
206206
emitter,
207207
typifier: self.typifier,
208-
expression_constness: self.expression_constness,
208+
local_expression_kind_tracker: self.local_expression_kind_tracker,
209209
}),
210210
}
211211
}
@@ -250,8 +250,8 @@ pub struct RuntimeExpressionContext<'temp, 'out> {
250250
/// Which `Expression`s in `self.naga_expressions` are const expressions, in
251251
/// the WGSL sense.
252252
///
253-
/// See [`StatementContext::expression_constness`] for details.
254-
expression_constness: &'temp mut crate::proc::ExpressionConstnessTracker,
253+
/// See [`StatementContext::local_expression_kind_tracker`] for details.
254+
local_expression_kind_tracker: &'temp mut crate::proc::ExpressionKindTracker,
255255
}
256256

257257
/// The type of Naga IR expression we are lowering an [`ast::Expression`] to.
@@ -337,7 +337,7 @@ pub struct ExpressionContext<'source, 'temp, 'out> {
337337
///
338338
/// [`module::const_expressions`]: crate::Module::const_expressions
339339
const_typifier: &'temp mut Typifier,
340-
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionConstnessTracker,
340+
global_expression_kind_tracker: &'temp mut crate::proc::ExpressionKindTracker,
341341

342342
/// Whether we are lowering a constant expression or a general
343343
/// runtime expression, and the data needed in each case.
@@ -373,7 +373,7 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> {
373373
ExpressionContextType::Runtime(ref mut rctx) => ConstantEvaluator::for_wgsl_function(
374374
self.module,
375375
&mut rctx.function.expressions,
376-
rctx.expression_constness,
376+
rctx.local_expression_kind_tracker,
377377
rctx.emitter,
378378
rctx.block,
379379
),
@@ -403,7 +403,7 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> {
403403
fn const_access(&self, handle: Handle<crate::Expression>) -> Option<u32> {
404404
match self.expr_type {
405405
ExpressionContextType::Runtime(ref ctx) => {
406-
if !ctx.expression_constness.is_const(handle) {
406+
if !ctx.local_expression_kind_tracker.is_const(handle) {
407407
return None;
408408
}
409409

@@ -455,7 +455,7 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> {
455455
) -> Result<crate::SwizzleComponent, Error<'source>> {
456456
match self.expr_type {
457457
ExpressionContextType::Runtime(ref rctx) => {
458-
if !rctx.expression_constness.is_const(expr) {
458+
if !rctx.local_expression_kind_tracker.is_const(expr) {
459459
return Err(Error::ExpectedConstExprConcreteIntegerScalar(
460460
component_span,
461461
));
@@ -899,7 +899,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
899899
types: &tu.types,
900900
module: &mut module,
901901
const_typifier: &mut Typifier::new(),
902-
global_expression_kind_tracker: &mut crate::proc::ExpressionConstnessTracker::new(),
902+
global_expression_kind_tracker: &mut crate::proc::ExpressionKindTracker::new(),
903903
};
904904

905905
for decl_handle in self.index.visit_ordered() {
@@ -1097,7 +1097,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
10971097
let mut local_table = FastHashMap::default();
10981098
let mut expressions = Arena::new();
10991099
let mut named_expressions = FastIndexMap::default();
1100-
let mut local_expression_kind_tracker = crate::proc::ExpressionConstnessTracker::new();
1100+
let mut local_expression_kind_tracker = crate::proc::ExpressionKindTracker::new();
11011101

11021102
let arguments = f
11031103
.arguments
@@ -1152,7 +1152,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
11521152
named_expressions: &mut named_expressions,
11531153
types: ctx.types,
11541154
module: ctx.module,
1155-
expression_constness: &mut local_expression_kind_tracker,
1155+
local_expression_kind_tracker: &mut local_expression_kind_tracker,
11561156
global_expression_kind_tracker: ctx.global_expression_kind_tracker,
11571157
};
11581158
let mut body = self.block(&f.body, false, &mut stmt_ctx)?;
@@ -1232,7 +1232,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
12321232
// affects when errors must be reported, so we can't even
12331233
// treat suitable `let` bindings as constant as an
12341234
// optimization.
1235-
ctx.expression_constness.force_non_const(value);
1235+
ctx.local_expression_kind_tracker.force_non_const(value);
12361236

12371237
let explicit_ty =
12381238
l.ty.map(|ty| self.resolve_ast_type(ty, &mut ctx.as_global()))
@@ -1316,7 +1316,9 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
13161316
// - the initialization is not a constant
13171317
// expression, so its value depends on the
13181318
// state at the point of initialization.
1319-
if is_inside_loop || !ctx.expression_constness.is_const(init) {
1319+
if is_inside_loop
1320+
|| !ctx.local_expression_kind_tracker.is_const(init)
1321+
{
13201322
(None, Some(init))
13211323
} else {
13221324
(Some(init), None)
@@ -1569,9 +1571,9 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
15691571
.function
15701572
.expressions
15711573
.append(crate::Expression::Binary { op, left, right }, stmt.span);
1572-
rctx.expression_constness
1574+
rctx.local_expression_kind_tracker
15731575
.insert(left, crate::proc::ExpressionKind::Runtime);
1574-
rctx.expression_constness
1576+
rctx.local_expression_kind_tracker
15751577
.insert(value, crate::proc::ExpressionKind::Runtime);
15761578

15771579
block.extend(emitter.finish(&ctx.function.expressions));
@@ -1946,7 +1948,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
19461948
.function
19471949
.expressions
19481950
.append(crate::Expression::CallResult(function), span);
1949-
rctx.expression_constness
1951+
rctx.local_expression_kind_tracker
19501952
.insert(result, crate::proc::ExpressionKind::Runtime);
19511953
result
19521954
});

naga/src/proc/constant_evaluator.rs

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ pub struct ConstantEvaluator<'a> {
296296
expressions: &'a mut Arena<Expression>,
297297

298298
/// Tracks the constness of expressions residing in [`Self::expressions`]
299-
expression_kind_tracker: &'a mut ExpressionConstnessTracker,
299+
expression_kind_tracker: &'a mut ExpressionKindTracker,
300300
}
301301

302302
#[derive(Debug)]
@@ -338,11 +338,11 @@ pub enum ExpressionKind {
338338
}
339339

340340
#[derive(Debug)]
341-
pub struct ExpressionConstnessTracker {
341+
pub struct ExpressionKindTracker {
342342
inner: Vec<ExpressionKind>,
343343
}
344344

345-
impl ExpressionConstnessTracker {
345+
impl ExpressionKindTracker {
346346
pub const fn new() -> Self {
347347
Self { inner: Vec::new() }
348348
}
@@ -529,7 +529,7 @@ impl<'a> ConstantEvaluator<'a> {
529529
/// Report errors according to WGSL's rules for constant evaluation.
530530
pub fn for_wgsl_module(
531531
module: &'a mut crate::Module,
532-
global_expression_kind_tracker: &'a mut ExpressionConstnessTracker,
532+
global_expression_kind_tracker: &'a mut ExpressionKindTracker,
533533
in_override_ctx: bool,
534534
) -> Self {
535535
Self::for_module(
@@ -549,7 +549,7 @@ impl<'a> ConstantEvaluator<'a> {
549549
/// Report errors according to GLSL's rules for constant evaluation.
550550
pub fn for_glsl_module(
551551
module: &'a mut crate::Module,
552-
global_expression_kind_tracker: &'a mut ExpressionConstnessTracker,
552+
global_expression_kind_tracker: &'a mut ExpressionKindTracker,
553553
) -> Self {
554554
Self::for_module(
555555
Behavior::Glsl(GlslRestrictions::Const),
@@ -561,7 +561,7 @@ impl<'a> ConstantEvaluator<'a> {
561561
fn for_module(
562562
behavior: Behavior<'a>,
563563
module: &'a mut crate::Module,
564-
global_expression_kind_tracker: &'a mut ExpressionConstnessTracker,
564+
global_expression_kind_tracker: &'a mut ExpressionKindTracker,
565565
) -> Self {
566566
Self {
567567
behavior,
@@ -580,7 +580,7 @@ impl<'a> ConstantEvaluator<'a> {
580580
pub fn for_wgsl_function(
581581
module: &'a mut crate::Module,
582582
expressions: &'a mut Arena<Expression>,
583-
local_expression_kind_tracker: &'a mut ExpressionConstnessTracker,
583+
local_expression_kind_tracker: &'a mut ExpressionKindTracker,
584584
emitter: &'a mut super::Emitter,
585585
block: &'a mut crate::Block,
586586
) -> Self {
@@ -605,7 +605,7 @@ impl<'a> ConstantEvaluator<'a> {
605605
pub fn for_glsl_function(
606606
module: &'a mut crate::Module,
607607
expressions: &'a mut Arena<Expression>,
608-
local_expression_kind_tracker: &'a mut ExpressionConstnessTracker,
608+
local_expression_kind_tracker: &'a mut ExpressionKindTracker,
609609
emitter: &'a mut super::Emitter,
610610
block: &'a mut crate::Block,
611611
) -> Self {
@@ -2050,7 +2050,7 @@ mod tests {
20502050
UniqueArena, VectorSize,
20512051
};
20522052

2053-
use super::{Behavior, ConstantEvaluator, ExpressionConstnessTracker, WgslRestrictions};
2053+
use super::{Behavior, ConstantEvaluator, ExpressionKindTracker, WgslRestrictions};
20542054

20552055
#[test]
20562056
fn unary_op() {
@@ -2131,8 +2131,7 @@ mod tests {
21312131
expr: expr1,
21322132
};
21332133

2134-
let expression_kind_tracker =
2135-
&mut ExpressionConstnessTracker::from_arena(&const_expressions);
2134+
let expression_kind_tracker = &mut ExpressionKindTracker::from_arena(&const_expressions);
21362135
let mut solver = ConstantEvaluator {
21372136
behavior: Behavior::Wgsl(WgslRestrictions::Const),
21382137
types: &mut types,
@@ -2218,8 +2217,7 @@ mod tests {
22182217
convert: Some(crate::BOOL_WIDTH),
22192218
};
22202219

2221-
let expression_kind_tracker =
2222-
&mut ExpressionConstnessTracker::from_arena(&const_expressions);
2220+
let expression_kind_tracker = &mut ExpressionKindTracker::from_arena(&const_expressions);
22232221
let mut solver = ConstantEvaluator {
22242222
behavior: Behavior::Wgsl(WgslRestrictions::Const),
22252223
types: &mut types,
@@ -2337,8 +2335,7 @@ mod tests {
23372335

23382336
let base = const_expressions.append(Expression::Constant(h), Default::default());
23392337

2340-
let expression_kind_tracker =
2341-
&mut ExpressionConstnessTracker::from_arena(&const_expressions);
2338+
let expression_kind_tracker = &mut ExpressionKindTracker::from_arena(&const_expressions);
23422339
let mut solver = ConstantEvaluator {
23432340
behavior: Behavior::Wgsl(WgslRestrictions::Const),
23442341
types: &mut types,
@@ -2431,8 +2428,7 @@ mod tests {
24312428

24322429
let h_expr = const_expressions.append(Expression::Constant(h), Default::default());
24332430

2434-
let expression_kind_tracker =
2435-
&mut ExpressionConstnessTracker::from_arena(&const_expressions);
2431+
let expression_kind_tracker = &mut ExpressionKindTracker::from_arena(&const_expressions);
24362432
let mut solver = ConstantEvaluator {
24372433
behavior: Behavior::Wgsl(WgslRestrictions::Const),
24382434
types: &mut types,
@@ -2514,8 +2510,7 @@ mod tests {
25142510

25152511
let h_expr = const_expressions.append(Expression::Constant(h), Default::default());
25162512

2517-
let expression_kind_tracker =
2518-
&mut ExpressionConstnessTracker::from_arena(&const_expressions);
2513+
let expression_kind_tracker = &mut ExpressionKindTracker::from_arena(&const_expressions);
25192514
let mut solver = ConstantEvaluator {
25202515
behavior: Behavior::Wgsl(WgslRestrictions::Const),
25212516
types: &mut types,

naga/src/proc/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ mod terminator;
1111
mod typifier;
1212

1313
pub use constant_evaluator::{
14-
ConstantEvaluator, ConstantEvaluatorError, ExpressionConstnessTracker, ExpressionKind,
14+
ConstantEvaluator, ConstantEvaluatorError, ExpressionKind, ExpressionKindTracker,
1515
};
1616
pub use emitter::Emitter;
1717
pub use index::{BoundsCheckPolicies, BoundsCheckPolicy, IndexableLength, IndexableLengthError};

naga/src/valid/expression.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ impl super::Validator {
184184
handle: Handle<crate::Expression>,
185185
gctx: crate::proc::GlobalCtx,
186186
mod_info: &ModuleInfo,
187-
global_expr_kind: &crate::proc::ExpressionConstnessTracker,
187+
global_expr_kind: &crate::proc::ExpressionKindTracker,
188188
) -> Result<(), ConstExpressionError> {
189189
use crate::Expression as E;
190190

@@ -224,7 +224,7 @@ impl super::Validator {
224224
module: &crate::Module,
225225
info: &FunctionInfo,
226226
mod_info: &ModuleInfo,
227-
global_expr_kind: &crate::proc::ExpressionConstnessTracker,
227+
global_expr_kind: &crate::proc::ExpressionKindTracker,
228228
) -> Result<ShaderStages, ExpressionError> {
229229
use crate::{Expression as E, Scalar as Sc, ScalarKind as Sk, TypeInner as Ti};
230230

naga/src/valid/function.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ impl super::Validator {
927927
var: &crate::LocalVariable,
928928
gctx: crate::proc::GlobalCtx,
929929
fun_info: &FunctionInfo,
930-
local_expr_kind: &crate::proc::ExpressionConstnessTracker,
930+
local_expr_kind: &crate::proc::ExpressionKindTracker,
931931
) -> Result<(), LocalVariableError> {
932932
log::debug!("var {:?}", var);
933933
let type_info = self
@@ -959,11 +959,11 @@ impl super::Validator {
959959
module: &crate::Module,
960960
mod_info: &ModuleInfo,
961961
entry_point: bool,
962-
global_expr_kind: &crate::proc::ExpressionConstnessTracker,
962+
global_expr_kind: &crate::proc::ExpressionKindTracker,
963963
) -> Result<FunctionInfo, WithSpan<FunctionError>> {
964964
let mut info = mod_info.process_function(fun, module, self.flags, self.capabilities)?;
965965

966-
let local_expr_kind = crate::proc::ExpressionConstnessTracker::from_arena(&fun.expressions);
966+
let local_expr_kind = crate::proc::ExpressionKindTracker::from_arena(&fun.expressions);
967967

968968
for (var_handle, var) in fun.local_variables.iter() {
969969
self.validate_local_var(var, module.to_ctx(), &info, &local_expr_kind)

0 commit comments

Comments
 (0)