Class StaticTypesBinaryExpressionMultiTypeDispatcher
- java.lang.Object
-
- org.codehaus.groovy.classgen.asm.BinaryExpressionHelper
-
- org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher
-
- org.codehaus.groovy.classgen.asm.sc.StaticTypesBinaryExpressionMultiTypeDispatcher
-
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
- Direct Known Subclasses:
IndyStaticTypesMultiTypeDispatcher
public class StaticTypesBinaryExpressionMultiTypeDispatcher extends BinaryExpressionMultiTypeDispatcher implements org.objectweb.asm.Opcodes
A specialized version of the multi type binary expression dispatcher which is aware of static compilation. It is able to generate optimized bytecode for some operations using JVM instructions when available.
-
-
Field Summary
-
Fields inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher
binExpWriter, typeMap, typeMapKeyNames
-
Fields inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionHelper
controller
-
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V9
-
-
Constructor Summary
Constructors Constructor Description StaticTypesBinaryExpressionMultiTypeDispatcher(WriterController wc)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
assignToArray(Expression enclosing, Expression receiver, Expression subscript, Expression rhsValueLoader, boolean safe)
protected void
evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)
void
evaluateEqual(BinaryExpression expression, boolean defineVariable)
protected void
writePostOrPrefixMethod(int op, String method, Expression expression, Expression orig)
-
Methods inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher
doPrimitiveCompare, doPrimtiveCompare, evaluateBinaryExpression, evaluateCompareExpression, getOperandType, initializeDelegateHelpers
-
Methods inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionHelper
assignToArray, eval, evaluateArrayAssignmentWithOperator, evaluateElvisEqual, evaluatePostfixMethod, evaluatePrefixMethod, evaluateTernary, getController, getIsCaseMethod
-
-
-
-
Constructor Detail
-
StaticTypesBinaryExpressionMultiTypeDispatcher
public StaticTypesBinaryExpressionMultiTypeDispatcher(WriterController wc)
-
-
Method Detail
-
writePostOrPrefixMethod
protected void writePostOrPrefixMethod(int op, String method, Expression expression, Expression orig)
- Overrides:
writePostOrPrefixMethod
in classBinaryExpressionMultiTypeDispatcher
-
evaluateBinaryExpressionWithAssignment
protected void evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)
- Overrides:
evaluateBinaryExpressionWithAssignment
in classBinaryExpressionMultiTypeDispatcher
-
evaluateEqual
public void evaluateEqual(BinaryExpression expression, boolean defineVariable)
- Overrides:
evaluateEqual
in classBinaryExpressionHelper
-
assignToArray
protected void assignToArray(Expression enclosing, Expression receiver, Expression subscript, Expression rhsValueLoader, boolean safe)
- Overrides:
assignToArray
in classBinaryExpressionMultiTypeDispatcher
-
-