Enum Class JitPassage.CtxReach

java.lang.Object
java.lang.Enum<JitPassage.CtxReach>
ghidra.pcode.emu.jit.JitPassage.CtxReach
All Implemented Interfaces:
Serializable, Comparable<JitPassage.CtxReach>, Constable
Enclosing class:
JitPassage

public static enum JitPassage.CtxReach extends Enum<JitPassage.CtxReach>
Describes the manner in which something is reachable, wrt. dynamic context changes within an instruction step.

At the moment, the only way context can be changed dynamically is via a p-code userop. Such ops must have the AnnotatedPcodeUseropLibrary.PcodeUserop.modifiesContext() attribute set. If such an op is known to have been executed when finishing an instruction (either by branch or fall-through), we must exit the compiled passage.

  • Enum Constant Details

    • WITHOUT_CTXMOD

      public static final JitPassage.CtxReach WITHOUT_CTXMOD
      There is at least one path to reach it. None of them modify the context dynamically.
    • MAYBE_CTXMOD

      public static final JitPassage.CtxReach MAYBE_CTXMOD
      There are at least two paths to reach it. Some modify the context dynamically, and some do not.
    • WITH_CTXMOD

      public static final JitPassage.CtxReach WITH_CTXMOD
      There is at least one path to reach it. All of them modify the context dynamically.
  • Method Details

    • values

      public static JitPassage.CtxReach[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static JitPassage.CtxReach valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • combine

      public abstract JitPassage.CtxReach combine(JitPassage.CtxReach that)
      Consider this and another reachability as "or"
      Parameters:
      that - the other reachability
      Returns:
      the "or" of both
    • canReachWithoutCtxMod

      public abstract boolean canReachWithoutCtxMod()
      Check if it is possible for this block to be reached without a context modification.

      This is true if there exists any path to this block that doesn't include a possible context modification.

      Returns:
      true if reachable without context modification, false otherwise.