sealBlock method

void sealBlock(
  1. BasicBlock block
)

Seals a block, indicating all predecessors are known.

This triggers filling in incomplete phis.

Implementation

void sealBlock(BasicBlock block) {
  if (_sealedBlocks.contains(block.id)) return;

  final incompletePhis = _incompletePhis[block.id] ?? [];
  for (final phi in incompletePhis) {
    final variable = Variable(phi.target.name);
    for (final pred in block.predecessors) {
      phi.addOperand(pred, readVariable(variable, pred));
    }
  }

  _sealedBlocks.add(block.id);
}