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

Method get_static

crates/rustc_codegen_spirv/src/codegen_cx/declare.rs:228–250  ·  view source on GitHub ↗
(&self, def_id: DefId)

Source from the content-addressed store, hash-verified

226 }
227
228 pub fn get_static(&self, def_id: DefId) -> SpirvValue {
229 let instance = Instance::mono(self.tcx, def_id);
230 if let Some(&g) = self.instances.borrow().get(&instance) {
231 return g;
232 }
233
234 let defined_in_current_codegen_unit = self
235 .codegen_unit
236 .items()
237 .contains_key(&MonoItem::Static(def_id));
238 assert!(
239 !defined_in_current_codegen_unit,
240 "get_static() should always hit the cache for statics defined in the same CGU, but did not for `{def_id:?}`"
241 );
242
243 let ty = instance.ty(self.tcx, ParamEnv::reveal_all());
244 let sym = self.tcx.symbol_name(instance).name;
245 let span = self.tcx.def_span(def_id);
246 let g = self.declare_global(span, self.layout_of(ty).spirv_type(span, self));
247 self.instances.borrow_mut().insert(instance, g);
248 self.set_linkage(g.def_cx(self), sym.to_string(), LinkageType::Import);
249 g
250 }
251
252 fn declare_global(&self, span: Span, ty: Word) -> SpirvValue {
253 let ptr_ty = SpirvType::Pointer { pointee: ty }.def(span, self);

Callers 2

scalar_to_backendMethod · 0.45
codegen_staticMethod · 0.45

Calls 7

tyMethod · 0.80
declare_globalMethod · 0.80
spirv_typeMethod · 0.80
insertMethod · 0.80
set_linkageMethod · 0.80
def_cxMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected