gnu.expr

Class 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.
Field Summary
LabelifFalse
LabelifTrue
booleantrueBranchComesFirst
True if the ifTrue label comes before the ifFalse label.
Constructor Summary
ConditionalTarget(Label ifTrue, Label ifFalse, Language language)
Method Summary
voidcompileFromStack(Compilation comp, Type stackType)
voidemitGotoFirstBranch(CodeAttr code)
Goto whichever of IfTrue or ifFalse is specified by trueBranchComesFirst.
TypegetType()

Field Detail

ifFalse

public Label ifFalse

ifTrue

public Label ifTrue

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 Detail

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 Detail

compileFromStack

public void compileFromStack(Compilation comp, Type stackType)

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.

getType

public Type getType()