Class JitControlFlowModel.UnterminatedFlowException

java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
ghidra.pcode.emu.jit.analysis.JitControlFlowModel.UnterminatedFlowException
All Implemented Interfaces:
Serializable
Enclosing class:
JitControlFlowModel

public static class JitControlFlowModel.UnterminatedFlowException extends IllegalArgumentException
An exception thrown when control flow might run off the edge of the passage.

By definition a passage is a collection of strides, and each stride is terminated by some op without fall through (or else a synthesized JitPassage.ExitPcodeOp. In particular, the last stride cannot end in fall through. If it did, there would be no op for it to fall through to. While this should never happen, it is easy in the course of development to allow it by accident. The control flow analysis can detect this as it finished splitting the passage into blocks. If the final block has fall through, the passage is said to have "unterminated flow," and this exception is thrown. We do not wait until execution of the passage to throw this. It is thrown during translation, as it represents an assertion failure in the translation process. That is, the decoder produced an unsound passage.

See Also:
  • Constructor Details

    • UnterminatedFlowException

      public UnterminatedFlowException()
      Construct the exception