Class IfExpression

  • All Implemented Interfaces:
    CodeGenerator

    public class IfExpression
    extends Object
    implements CodeGenerator
    A CodeGenerator that provides something semanticaly identical to if.

    It generates code of the form:

    conditional branch to trueLabel
    ifFalse instructions here
    branch to endLabel
    trueLabel
    ifTrue instructions here
    endLabel

    Author:
    Matthew Pocock
    • Method Detail

      • stackDepth

        public int stackDepth()
        Description copied from interface: CodeGenerator
        Return the total depth of the stack required by this CodeGenerator.

        For single byte-code instructions, this will be the same as stackDelta() if stackDelta() is positive, zero otherwise. For a compound instruction, this will be the maximum stack depth required to execute all sub-instructions.

        Specified by:
        stackDepth in interface CodeGenerator
        Returns:
        the stack depth needed
      • stackDelta

        public int stackDelta()
        Description copied from interface: CodeGenerator
        Return the change in the stack dept this generator will cause.

        In the case of an instruction that adds items to the stack, stackDelta will be positive. For instructions that removes items from the stack, this will be negative.

        Specified by:
        stackDelta in interface CodeGenerator
        Returns:
        the change between stack depth before and after execution of this code