Exemple #1
0
        public void Terminate(BlockEnding ending, params BasicBlock[] successors)
        {
            if (Ending != BlockEnding.Open)
            {
                throw new InvalidOperationException("Basic block terminated more than once");
            }

            Ending     = ending;
            Successors = new List <BasicBlock>(successors);
        }
Exemple #2
0
 void EndBlock(BlockEnding ending, params BasicBlock[] successors)
 {
     if (_current != null)
     {
         _current.Terminate(ending, successors);
         _current = null;
     }
     else
     {
         UnreachableCodeDetected(_blocks.Last().Source);
     }
 }