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, transfer to the ifTrue label;
if false, tranfer to the ifFalse label.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ifTrue
public Label ifTrue
ifFalse
public Label ifFalse
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.
ConditionalTarget
public ConditionalTarget(Label ifTrue,
Label ifFalse,
Language language)
- Parameters:
ifTrue
- label to jump to if this evaluates to trueifFalse
- label to jump to if truelanguage
- specifies what values are true
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.