Package gnu.expr

Class ConditionalTarget

java.lang.Object
gnu.expr.Target
gnu.expr.ConditionalTarget

public class ConditionalTarget extends Target
This is the Target of a boolean expression, in a conditional context. If the expression evaluates to true, transfer to the ifTrue label; if false, transfer to the ifFalse label.
  • Field Details

    • ifTrue

      public Label ifTrue
    • ifFalse

      public Label ifFalse
    • isTrueMethod

      public static final Method isTrueMethod
    • trueBranchComesFirst

      public boolean trueBranchComesFirst
      True if the ifTrue label comes before the ifFalse label. This is used in the hope we can optimize away a branch followed by its target.
  • Constructor Details

    • ConditionalTarget

      public ConditionalTarget(Label ifTrue, Label ifFalse, Language language)
      Parameters:
      ifTrue - label to jump to if this evaluates to true
      ifFalse - label to jump to if true
      language - specifies what values are true
  • Method Details

    • getType

      public Type getType()
      Specified by:
      getType in class Target
    • compileFromStack

      public void compileFromStack(Compilation comp, Type stackType)
      Specified by:
      compileFromStack in class Target
    • emitGotoFirstBranch

      public final void emitGotoFirstBranch(CodeAttr code)
      Goto whichever of IfTrue or ifFalse is specified by trueBranchComesFirst. Normally, the goto should get optimized away as a no-op.