luaur_analysis/methods/
cfg_builder_emit_join.rs1use crate::methods::block_set_reaching_definition::block_set_reaching_definition;
2use crate::records::block::Block;
3use crate::records::cfg_builder::CfgBuilder;
4use crate::records::join::Join;
5use crate::records::symbol::Symbol;
6
7impl CfgBuilder {
8 pub fn emit_join(&mut self, block: *mut Block, sym: Symbol) -> *mut Join {
11 let def = self.new_definition(sym.clone());
12 let j: *mut Join = self.emit::<Join, _>(block, def);
13 let block_ref = unsafe { &mut *block };
14 block_set_reaching_definition(block_ref, sym, def);
15 self.incomplete_joins.get_or_insert(block).insert(j);
16 j
17 }
18}