org.codehaus.groovy.classgen.asm.sc

## Class StaticTypesCallSiteWriter

- java.lang.Object
- - org.codehaus.groovy.classgen.asm.CallSiteWriter
  - - org.codehaus.groovy.classgen.asm.sc.StaticTypesCallSiteWriter

- All Implemented Interfaces:
    org.objectweb.asm.Opcodes

      public class StaticTypesCallSiteWriter
      extends CallSiteWriter
      implements org.objectweb.asm.Opcodes

  A call site writer which replaces call site caching with static calls. This means that the generated code looks more like Java code than dynamic Groovy code. Best effort is made to use JVM instructions instead of calls to helper methods.
  Author:
    Cedric Champeau

- - ### Field Summary

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

      `CONSTRUCTOR`

    - ### 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, ASM7, 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, V9`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StaticTypesCallSiteWriter(StaticTypesWriterController controller)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `fallbackAttributeOrPropertySite(PropertyExpression expression, Expression objectExpression, java.lang.String name, MethodCallerMultiAdapter adapter)`
    `void` | `generateCallSiteArray()`
    `void` | `makeCallSite(Expression receiver, java.lang.String message, Expression arguments, boolean safe, boolean implicitThis, boolean callCurrent, boolean callStatic)`
    `void` | `makeCallSiteArrayInitializer()`
    `void` | `makeGetPropertySite(Expression receiver, java.lang.String methodName, boolean safe, boolean implicitThis)`
    `void` | `makeGroovyObjectGetPropertySite(Expression receiver, java.lang.String methodName, boolean safe, boolean implicitThis)`
    `void` | `makeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments)`
    `void` | `makeSiteEntry()`
    `void` | `prepareCallSite(java.lang.String message)`

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

      `getCallSites, hasCallSiteUse, prepareSiteAndReceiver, visitBoxedArgument`

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

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

- - ### Constructor Detail

    - #### StaticTypesCallSiteWriter

          public StaticTypesCallSiteWriter(StaticTypesWriterController controller)

  - ### Method Detail

    - #### generateCallSiteArray

          public void generateCallSiteArray()

      Overrides:
        `generateCallSiteArray` in class `CallSiteWriter`

    - #### makeCallSite

          public void makeCallSite(Expression receiver,
                                   java.lang.String message,
                                   Expression arguments,
                                   boolean safe,
                                   boolean implicitThis,
                                   boolean callCurrent,
                                   boolean callStatic)

      Overrides:
        `makeCallSite` in class `CallSiteWriter`

    - #### makeGetPropertySite

          public void makeGetPropertySite(Expression receiver,
                                          java.lang.String methodName,
                                          boolean safe,
                                          boolean implicitThis)

      Overrides:
        `makeGetPropertySite` in class `CallSiteWriter`

    - #### makeGroovyObjectGetPropertySite

          public void makeGroovyObjectGetPropertySite(Expression receiver,
                                                      java.lang.String methodName,
                                                      boolean safe,
                                                      boolean implicitThis)

      Overrides:
        `makeGroovyObjectGetPropertySite` in class `CallSiteWriter`

    - #### makeCallSiteArrayInitializer

          public void makeCallSiteArrayInitializer()

      Overrides:
        `makeCallSiteArrayInitializer` in class `CallSiteWriter`

    - #### makeSiteEntry

          public void makeSiteEntry()

      Overrides:
        `makeSiteEntry` in class `CallSiteWriter`

    - #### prepareCallSite

          public void prepareCallSite(java.lang.String message)

      Overrides:
        `prepareCallSite` in class `CallSiteWriter`

    - #### makeSingleArgumentCall

          public void makeSingleArgumentCall(Expression receiver,
                                             java.lang.String message,
                                             Expression arguments)

      Overrides:
        `makeSingleArgumentCall` in class `CallSiteWriter`

    - #### fallbackAttributeOrPropertySite

          public void fallbackAttributeOrPropertySite(PropertyExpression expression,
                                                      Expression objectExpression,
                                                      java.lang.String name,
                                                      MethodCallerMultiAdapter adapter)

      Overrides:
        `fallbackAttributeOrPropertySite` in class `CallSiteWriter`