org.codehaus.groovy.classgen.asm.sc

## 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

      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.
  Author:
    Cedric Champeau, Jochen Theodorou

- - ### Field Summary

    - ### Fields inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher

      `binExpWriter, typeMap, typeMapKeyNames`

    - ### 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_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, ASM4, ASM5, ASM6, 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, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V9`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StaticTypesBinaryExpressionMultiTypeDispatcher(WriterController wc)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `assignToArray(Expression parent, Expression receiver, Expression index, Expression rhsValueLoader)`
    `void` | `evaluateEqual(BinaryExpression expression, boolean defineVariable)`
    `protected void` | `writePostOrPrefixMethod(int op, java.lang.String method, Expression expression, Expression orig)`

    - ### Methods inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionMultiTypeDispatcher

      `doPrimitiveCompare, doPrimtiveCompare, evaluateBinaryExpression, evaluateBinaryExpressionWithAssignment, evaluateCompareExpression, getOperandType, initializeDelegateHelpers`

    - ### Methods inherited from class org.codehaus.groovy.classgen.asm.BinaryExpressionHelper

      `eval, evaluateArrayAssignmentWithOperator, evaluatePostfixMethod, evaluatePrefixMethod, evaluateTernary, getController, getIsCaseMethod`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### StaticTypesBinaryExpressionMultiTypeDispatcher

          public StaticTypesBinaryExpressionMultiTypeDispatcher(WriterController wc)

  - ### Method Detail

    - #### writePostOrPrefixMethod

          protected void writePostOrPrefixMethod(int op,
                                                 java.lang.String method,
                                                 Expression expression,
                                                 Expression orig)

      Overrides:
        `writePostOrPrefixMethod` in class `BinaryExpressionMultiTypeDispatcher`

    - #### evaluateEqual

          public void evaluateEqual(BinaryExpression expression,
                                    boolean defineVariable)

      Overrides:
        `evaluateEqual` in class `BinaryExpressionHelper`

    - #### assignToArray

          protected void assignToArray(Expression parent,
                                       Expression receiver,
                                       Expression index,
                                       Expression rhsValueLoader)

      Overrides:
        `assignToArray` in class `BinaryExpressionMultiTypeDispatcher`