MCPcopy Create free account
hub / github.com/Rust-GPU/rust-gpu / dump_instances

Method dump_instances

crates/rustc_codegen_spirv/src/linker/specializer.rs:2499–2580  ·  view source on GitHub ↗
(&self, w: &mut impl io::Write)

Source from the content-addressed store, hash-verified

2497 }
2498
2499 fn dump_instances(&self, w: &mut impl io::Write) -> io::Result<()> {
2500 writeln!(w, "; All specializer \"generic\"s and their instances:")?;
2501 writeln!(w)?;
2502
2503 // FIXME(eddyb) maybe dump (transitive) dependencies? could use a def-use graph.
2504 for (&generic_id, generic) in &self.specializer.generics {
2505 if let Some(name) = self.specializer.debug_names.get(&generic_id) {
2506 writeln!(w, "; {name}")?;
2507 }
2508
2509 write!(
2510 w,
2511 "{} = Op{:?}",
2512 Instance {
2513 generic_id,
2514 generic_args: Param(0)..Param(generic.param_count)
2515 }
2516 .display(Param::range_iter),
2517 generic.def.class.opcode
2518 )?;
2519 let mut next_param = Param(0);
2520 for operand in generic
2521 .def
2522 .result_type
2523 .map(Operand::IdRef)
2524 .iter()
2525 .chain(generic.def.operands.iter())
2526 {
2527 write!(w, " ")?;
2528 let (needed, used_generic) = self.specializer.params_needed_by(operand);
2529 let params = next_param..Param(next_param.0 + needed);
2530
2531 // NOTE(eddyb) see HACK comment in `instantiate_instruction`.
2532 if generic.def.class.opcode != Op::Function {
2533 next_param = params.end;
2534 }
2535
2536 if used_generic.is_some() {
2537 write!(
2538 w,
2539 "{}",
2540 Instance {
2541 generic_id: operand.unwrap_id_ref(),
2542 generic_args: params
2543 }
2544 .display(Param::range_iter)
2545 )?;
2546 } else if needed == 1 {
2547 write!(w, "{}", params.start)?;
2548 } else {
2549 write!(w, "{operand}")?;
2550 }
2551 }
2552 writeln!(w)?;
2553
2554 if let Some(param_values) = &generic.param_values {
2555 write!(w, " where")?;
2556 for (i, v) in param_values.iter().enumerate() {

Callers 1

specializeFunction · 0.80

Calls 5

ParamClass · 0.85
iterMethod · 0.80
params_needed_byMethod · 0.80
all_instances_ofMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected