Package org.codehaus.groovy.classgen.asm
Class BinaryIntExpressionHelper
java.lang.Object
org.codehaus.groovy.classgen.asm.BinaryExpressionWriter
org.codehaus.groovy.classgen.asm.BinaryIntExpressionHelper
- Direct Known Subclasses:
BinaryBooleanExpressionHelper
Emits optimized bytecode for integer binary operations.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates an integer-specialized binary expression helper.BinaryIntExpressionHelper(WriterController wc, MethodCaller arraySet, MethodCaller arrayGet) -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoubleTwoOperands(org.objectweb.asm.MethodVisitor mv) Duplicates the two operands already on the operand stack.protected intgetBitwiseOperationBytecode(int type) Returns the bitwise opcode for the supplied token.protected intprotected ClassNodeprotected ClassNodeprotected intgetShiftOperationBytecode(int type) Returns the shift opcode for the supplied token.protected intgetStandardOperationBytecode(int type) Returns the arithmetic opcode for the supplied token.protected voidremoveTwoOperands(org.objectweb.asm.MethodVisitor mv) Removes the two operands already on the operand stack.protected booleanprotected voidwriteMinusMinus(org.objectweb.asm.MethodVisitor mv) Emits a prefix/postfix decrement.protected voidwritePlusPlus(org.objectweb.asm.MethodVisitor mv) Emits a prefix/postfix increment.protected booleanwriteSpaceship(int type, boolean simulate) writes the spaceship operator, type should be COMPARE_TOprotected booleanwriteStdCompare(int type, boolean simulate) writes a std compare.Methods inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionWriter
arrayGet, arraySet, getArrayGetCaller, getArrayGetResultType, getArraySetCaller, getController, setArraySetAndGet, write, writeBitwiseOp, writeDivision, writePostOrPrefixMethod, writeShiftOp, writeStdOperators
-
Constructor Details
-
BinaryIntExpressionHelper
Creates an integer-specialized binary expression helper.- Parameters:
wc- the active writer controller
-
BinaryIntExpressionHelper
- Since:
- 2.5.0
-
-
Method Details
-
writeStdCompare
protected boolean writeStdCompare(int type, boolean simulate) writes a std compare. This involves the tokens IF_ICMPEQ, IF_ICMPNE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE and IF_ICMPLT- Overrides:
writeStdComparein classBinaryExpressionWriter- Parameters:
type- the token type- Returns:
- true if a successful std compare write
-
writeSpaceship
protected boolean writeSpaceship(int type, boolean simulate) writes the spaceship operator, type should be COMPARE_TO- Overrides:
writeSpaceshipin classBinaryExpressionWriter- Parameters:
type- the token typesimulate- whether to probe support without emitting bytecode- Returns:
- true if a successful spaceship operator write
-
doubleTwoOperands
protected void doubleTwoOperands(org.objectweb.asm.MethodVisitor mv) Duplicates the two operands already on the operand stack.- Specified by:
doubleTwoOperandsin classBinaryExpressionWriter- Parameters:
mv- the current method visitor
-
getBitwiseOperationBytecode
protected int getBitwiseOperationBytecode(int type) Returns the bitwise opcode for the supplied token.- Specified by:
getBitwiseOperationBytecodein classBinaryExpressionWriter- Parameters:
type- the normalized token index- Returns:
- the ASM opcode
-
getCompareCode
protected int getCompareCode()- Specified by:
getCompareCodein classBinaryExpressionWriter- Returns:
- the ASM compare opcode used by this primitive type
-
getNormalOpResultType
- Specified by:
getNormalOpResultTypein classBinaryExpressionWriter- Returns:
- the result type for normal arithmetic operations
-
getShiftOperationBytecode
protected int getShiftOperationBytecode(int type) Returns the shift opcode for the supplied token.- Specified by:
getShiftOperationBytecodein classBinaryExpressionWriter- Parameters:
type- the normalized token index- Returns:
- the ASM opcode
-
getStandardOperationBytecode
protected int getStandardOperationBytecode(int type) Returns the arithmetic opcode for the supplied token.- Specified by:
getStandardOperationBytecodein classBinaryExpressionWriter- Parameters:
type- the normalized token index- Returns:
- the ASM opcode
-
removeTwoOperands
protected void removeTwoOperands(org.objectweb.asm.MethodVisitor mv) Removes the two operands already on the operand stack.- Specified by:
removeTwoOperandsin classBinaryExpressionWriter- Parameters:
mv- the current method visitor
-
writeMinusMinus
protected void writeMinusMinus(org.objectweb.asm.MethodVisitor mv) Emits a prefix/postfix decrement.- Specified by:
writeMinusMinusin classBinaryExpressionWriter- Parameters:
mv- the current method visitor
-
writePlusPlus
protected void writePlusPlus(org.objectweb.asm.MethodVisitor mv) Emits a prefix/postfix increment.- Specified by:
writePlusPlusin classBinaryExpressionWriter- Parameters:
mv- the current method visitor
-
getDevisionOpResultType
- Specified by:
getDevisionOpResultTypein classBinaryExpressionWriter- Returns:
- the result type for division operations
-
supportsDivision
protected boolean supportsDivision()- Overrides:
supportsDivisionin classBinaryExpressionWriter- Returns:
- whether this primitive helper supports division bytecode directly
-