Class DataClayExecutionMethodTransformer

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

    public class DataClayExecutionMethodTransformer
    extends DataClayMethodTransformer
    This class injects code in a concrete method that is executed in dataClay execution classes / stubs.
    • Field Summary

      • Fields inherited from class org.objectweb.asm.commons.AdviceAdapter

        methodAccess, methodDesc
      • Fields inherited from class org.objectweb.asm.commons.GeneratorAdapter

        ADD, AND, DIV, EQ, GE, GT, LE, LT, MUL, NE, NEG, OR, REM, SHL, SHR, SUB, USHR, XOR
      • Fields inherited from class org.objectweb.asm.commons.LocalVariablesSorter

        firstLocal, nextLocal
      • Fields inherited from class org.objectweb.asm.MethodVisitor

        api, mv
      • 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, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V9
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static void injectMethodFromAnnotation​(org.objectweb.asm.commons.GeneratorAdapter genAd, Annotation a, String implementationID, String updateImplementationID, String propertyTypeDesc)
      Inject call to a concrete method depending on the method defined in an annotation for a replication behaviour.
      static void injectReplicatedEndMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd, String methodDescriptor, String thisclassDesc, String opNameAndDesc, String implIDAsStr, String updateImplIDAsStr, List<Annotation> annotations)
      Inject code at the end of a dataClay setter for replication ($$setUpdate$$Field)
      protected static void injectReplicatedStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd, String methodDescriptor, String thisclassDesc, String opName, String opNameAndDesc, String implIDAsStr, List<Annotation> annotations)
      Inject code at the beginning of a dataClay setter for replication ($$setUpdate$$Field)
      protected static void injectSetterStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd, String methodDescriptor, String thisclassDesc, String opName, String opNameAndDesc, String implIDAsStr, List<Annotation> annotations)
      Inject code at the beginning of a dataClay setter ($$setField)
      protected static void injectStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd, String methodDescriptor, String thisclassDesc, String opName, String opNameAndDesc, String implIDAsStr, ImplementationID prefetchingID, MetaClassID prefetchingClassID)
      Inject code at the beginning of a dataClay registered method
      protected void onMethodEnter()  
      void visitFieldInsn​(int opcode, String owner, String name, String desc)  
      • Methods inherited from class org.objectweb.asm.commons.AdviceAdapter

        visitCode, visitInsn, visitIntInsn, visitInvokeDynamicInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLookupSwitchInsn, visitMethodInsn, visitMultiANewArrayInsn, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn, visitVarInsn
      • Methods inherited from class org.objectweb.asm.commons.GeneratorAdapter

        arrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getAccess, getArgumentTypes, getField, getLocalType, getName, getReturnType, getStatic, goTo, ifCmp, ifICmp, ifNonNull, ifNull, ifZCmp, iinc, instanceOf, invokeConstructor, invokeDynamic, invokeInterface, invokeStatic, invokeVirtual, loadArg, loadArgArray, loadArgs, loadArgs, loadLocal, loadLocal, loadThis, mark, mark, math, monitorEnter, monitorExit, newArray, newInstance, newLabel, not, pop, pop2, push, push, push, push, push, push, push, push, push, putField, putStatic, ret, returnValue, setLocalType, storeArg, storeLocal, storeLocal, swap, swap, tableSwitch, tableSwitch, throwException, throwException, unbox, valueOf
      • Methods inherited from class org.objectweb.asm.commons.LocalVariablesSorter

        newLocal, newLocalMapping, updateNewLocals, visitFrame, visitIincInsn, visitLocalVariable, visitLocalVariableAnnotation
      • Methods inherited from class org.objectweb.asm.MethodVisitor

        visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitEnd, visitInsnAnnotation, visitLineNumber, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTypeAnnotation
    • Constructor Detail

      • DataClayExecutionMethodTransformer

        public DataClayExecutionMethodTransformer​(org.objectweb.asm.MethodVisitor next,
                                                  int accessFlags,
                                                  String methodName,
                                                  String methodDescriptor,
                                                  String newclassDesc,
                                                  Operation theoperation,
                                                  Implementation theimpl,
                                                  List<Property> properties)
        Constructor of the method transformer.
        Parameters:
        next - Next visitor after the method is transformed (visitor pattern)
        accessFlags - Method access flags
        methodName - Method name being transformed
        methodDescriptor - Method descriptor
        newclassDesc - Descriptor of the class containing the method
        theoperation - DataClay operation information
        theimpl - DataClay implementation information
        properties - DataClay properties
    • Method Detail

      • onMethodEnter

        protected void onMethodEnter()
        Overrides:
        onMethodEnter in class org.objectweb.asm.commons.AdviceAdapter
      • injectSetterStartMethod

        protected static void injectSetterStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd,
                                                      String methodDescriptor,
                                                      String thisclassDesc,
                                                      String opName,
                                                      String opNameAndDesc,
                                                      String implIDAsStr,
                                                      List<Annotation> annotations)
        Inject code at the beginning of a dataClay setter ($$setField)
        Parameters:
        genAd - ASM bytecode generator - helper
        methodDescriptor - Setter method descriptor
        thisclassDesc - Descriptor of the class containing the method
        opName - Setter operation name
        opNameAndDesc - Setter operation name and descriptor
        implIDAsStr - dataClay Implementation ID of the setter represented as string
        annotations - Annotations of the setter defined by the user
      • injectReplicatedStartMethod

        protected static void injectReplicatedStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd,
                                                          String methodDescriptor,
                                                          String thisclassDesc,
                                                          String opName,
                                                          String opNameAndDesc,
                                                          String implIDAsStr,
                                                          List<Annotation> annotations)
        Inject code at the beginning of a dataClay setter for replication ($$setUpdate$$Field)
        Parameters:
        genAd - ASM bytecode generator - helper
        methodDescriptor - Setter method descriptor
        thisclassDesc - Descriptor of the class containing the method
        opName - Setter operation name
        opNameAndDesc - Setter operation name and descriptor
        implIDAsStr - dataClay Implementation ID of the setter represented as string
        annotations - Annotations of the setter defined by the user
      • injectReplicatedEndMethod

        public static void injectReplicatedEndMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd,
                                                     String methodDescriptor,
                                                     String thisclassDesc,
                                                     String opNameAndDesc,
                                                     String implIDAsStr,
                                                     String updateImplIDAsStr,
                                                     List<Annotation> annotations)
        Inject code at the end of a dataClay setter for replication ($$setUpdate$$Field)
        Parameters:
        genAd - ASM bytecode generator - helper
        methodDescriptor - Setter method descriptor
        thisclassDesc - Descriptor of the class containing the method
        opNameAndDesc - Setter operation name and descriptor
        implIDAsStr - dataClay Implementation ID of the setter represented as string
        updateImplIDAsStr - update implementation id of the setter as string
        annotations - Annotations of the setter defined by the user
      • injectMethodFromAnnotation

        public static void injectMethodFromAnnotation​(org.objectweb.asm.commons.GeneratorAdapter genAd,
                                                      Annotation a,
                                                      String implementationID,
                                                      String updateImplementationID,
                                                      String propertyTypeDesc)
        Inject call to a concrete method depending on the method defined in an annotation for a replication behaviour.
        Parameters:
        genAd - ASM bytecode generator - helper
        a - Annotation of the method
        implementationID - dataClay Implementation ID of the setter represented as string
        updateImplementationID - dataClay Implementation ID of the set updated as string
        propertyTypeDesc - Descriptor of the type being replicated
      • injectStartMethod

        protected static void injectStartMethod​(org.objectweb.asm.commons.GeneratorAdapter genAd,
                                                String methodDescriptor,
                                                String thisclassDesc,
                                                String opName,
                                                String opNameAndDesc,
                                                String implIDAsStr,
                                                ImplementationID prefetchingID,
                                                MetaClassID prefetchingClassID)
        Inject code at the beginning of a dataClay registered method
        Parameters:
        genAd - ASM bytecode generator - helper
        methodDescriptor - Setter method descriptor
        thisclassDesc - Descriptor of the class containing the method
        opName - Setter operation name
        opNameAndDesc - Setter operation name and descriptor
        implIDAsStr - dataClay Implementation ID of the setter represented as string
        prefetchingID - ID of implementation method to execute in case of prefetching
        prefetchingClassID - ID of the class containing the prefetching method defined before