Class GeneralComparisonCompiler


  • public class GeneralComparisonCompiler
    extends ToBooleanCompiler
    Generate code for a GeneralComparison
    • Constructor Detail

      • GeneralComparisonCompiler

        public GeneralComparisonCompiler()
    • Method Detail

      • compileToBoolean

        public void compileToBoolean​(CompilerService compiler,
                                     Expression expression)
                              throws CannotCompileException
        Description copied from class: ExpressionCompiler
        Generate bytecode to evaluate the expression as a boolean Precondition: none. Postcondition: at execution time, the stack contains an integer (0=false, 1=true) representing the result of the expression
        Specified by:
        compileToBoolean in class ExpressionCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • generateComparisonCode

        public static void generateComparisonCode​(CompilerService compiler,
                                                  ComparisonExpression comparison,
                                                  LabelInfo returnTrue,
                                                  LabelInfo returnFalse,
                                                  LabelInfo end,
                                                  int item0Var,
                                                  int item1Var,
                                                  AtomicType type0,
                                                  AtomicType type1,
                                                  boolean checkTypes)
        Generate code to compare two items, leaving a boolean result on the top of the bytecode stack
        Parameters:
        compiler - the compiler service
        comparison - the comparison expression being compiled
        returnTrue - label to jump to to return true
        returnFalse - label to jump to to return false
        end - label to jump to to exit, with the result on stack
        item0Var - position of local variable (or if negative, argument) holding the first item
        item1Var - position of local variable (or if negative, argument) holding the second item
        type0 - static type of the first item
        type1 - static type of the second item
        checkTypes - if true, code needs to be generated to check the items are comparable