Skip to main content

luaur_analysis/methods/
cfg_builder_seal.rs

1use crate::records::block::Block;
2use crate::records::cfg_builder::CfgBuilder;
3
4impl CfgBuilder {
5    /// `void CFGBuilder::seal(Block* b)`. Reference: `ControlFlowGraph.cpp`.
6    pub fn seal(&mut self, b: *mut Block) {
7        unsafe {
8            // C++:
9            //   auto joinsToFill = incompleteJoins.find(b);
10            //   if (joinsToFill != nullptr)
11            //       for (auto j : *joinsToFill) fillJoinOperands(b, j);
12            //   sealedBlocks.insert(b);
13            if let Some(joins) = self.incomplete_joins.find(&b) {
14                let joins: alloc::vec::Vec<_> = joins.iter().copied().collect();
15                for j in joins {
16                    self.fill_join_operands(b, j);
17                }
18            }
19            self.sealed_blocks.insert(b);
20        }
21    }
22}