Class DataClayExecutionMethodTransformer
- java.lang.Object
-
- org.objectweb.asm.MethodVisitor
-
- org.objectweb.asm.commons.LocalVariablesSorter
-
- org.objectweb.asm.commons.GeneratorAdapter
-
- org.objectweb.asm.commons.AdviceAdapter
-
- es.bsc.dataclay.logic.classmgr.bytecode.java.methods.DataClayMethodTransformer
-
- es.bsc.dataclay.logic.classmgr.bytecode.java.methods.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 es.bsc.dataclay.logic.classmgr.bytecode.java.methods.DataClayMethodTransformer
classDesc, implementation, operation, properties
-
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 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
-
-
Constructor Summary
Constructors Constructor Description 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.
-
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 methodprotected void
onMethodEnter()
void
visitFieldInsn(int opcode, String owner, String name, String desc)
-
Methods inherited from class es.bsc.dataclay.logic.classmgr.bytecode.java.methods.DataClayMethodTransformer
injectEndMethod, injectSetterStartMethod, injectStartMethod, onMethodExit, visitMaxs
-
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
-
-
-
-
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 flagsmethodName
- Method name being transformedmethodDescriptor
- Method descriptornewclassDesc
- Descriptor of the class containing the methodtheoperation
- DataClay operation informationtheimpl
- DataClay implementation informationproperties
- DataClay properties
-
-
Method Detail
-
onMethodEnter
protected void onMethodEnter()
- Overrides:
onMethodEnter
in classorg.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 - helpermethodDescriptor
- Setter method descriptorthisclassDesc
- Descriptor of the class containing the methodopName
- Setter operation nameopNameAndDesc
- Setter operation name and descriptorimplIDAsStr
- dataClay Implementation ID of the setter represented as stringannotations
- 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 - helpermethodDescriptor
- Setter method descriptorthisclassDesc
- Descriptor of the class containing the methodopName
- Setter operation nameopNameAndDesc
- Setter operation name and descriptorimplIDAsStr
- dataClay Implementation ID of the setter represented as stringannotations
- 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 - helpermethodDescriptor
- Setter method descriptorthisclassDesc
- Descriptor of the class containing the methodopNameAndDesc
- Setter operation name and descriptorimplIDAsStr
- dataClay Implementation ID of the setter represented as stringupdateImplIDAsStr
- update implementation id of the setter as stringannotations
- 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 - helpera
- Annotation of the methodimplementationID
- dataClay Implementation ID of the setter represented as stringupdateImplementationID
- dataClay Implementation ID of the set updated as stringpropertyTypeDesc
- 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 - helpermethodDescriptor
- Setter method descriptorthisclassDesc
- Descriptor of the class containing the methodopName
- Setter operation nameopNameAndDesc
- Setter operation name and descriptorimplIDAsStr
- dataClay Implementation ID of the setter represented as stringprefetchingID
- ID of implementation method to execute in case of prefetchingprefetchingClassID
- ID of the class containing the prefetching method defined before
-
visitFieldInsn
public void visitFieldInsn(int opcode, String owner, String name, String desc)
- Overrides:
visitFieldInsn
in classDataClayMethodTransformer
-
-