Package com.saxonica.ee.bytecode
Class GeneralComparisonCompiler
- java.lang.Object
-
- com.saxonica.ee.bytecode.ExpressionCompiler
-
- com.saxonica.ee.bytecode.ToBooleanCompiler
-
- com.saxonica.ee.bytecode.GeneralComparisonCompiler
-
public class GeneralComparisonCompiler extends ToBooleanCompiler
Generate code for a GeneralComparison
-
-
Constructor Summary
Constructors Constructor Description GeneralComparisonCompiler()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
compileToBoolean(CompilerService compiler, Expression expression)
Generate bytecode to evaluate the expression as a boolean Precondition: none.void
compileToBooleanManyToMany(CompilerService compiler, GeneralComparison comparison)
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-
Methods inherited from class com.saxonica.ee.bytecode.ToBooleanCompiler
compileToItem, compileToIterator, compileToPush
-
Methods inherited from class com.saxonica.ee.bytecode.ExpressionCompiler
allocateStatic, compileItemFromInt, compileToPrimitive, generateMethod, handleEmptyStringResult, printStackTop, verify, visitAnnotation, visitLineNumber
-
-
-
-
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 classExpressionCompiler
- Parameters:
compiler
- the compiler serviceexpression
- the expression to be compiled- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
compileToBooleanManyToMany
public void compileToBooleanManyToMany(CompilerService compiler, GeneralComparison comparison) throws CannotCompileException
- Throws:
CannotCompileException
-
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 servicecomparison
- the comparison expression being compiledreturnTrue
- label to jump to to return truereturnFalse
- label to jump to to return falseend
- label to jump to to exit, with the result on stackitem0Var
- position of local variable (or if negative, argument) holding the first itemitem1Var
- position of local variable (or if negative, argument) holding the second itemtype0
- static type of the first itemtype1
- static type of the second itemcheckTypes
- if true, code needs to be generated to check the items are comparable
-
-