org.multiverse.stms.alpha.instrumentation.transactionalobject
Class TransactionalObjectTransformer

java.lang.Object
  extended by org.multiverse.stms.alpha.instrumentation.transactionalobject.TransactionalObjectTransformer
All Implemented Interfaces:
org.objectweb.asm.Opcodes

public final class TransactionalObjectTransformer
extends Object
implements org.objectweb.asm.Opcodes

An object responsible for enhancing TransactionalObjects. It makes sure that an TransactionalObject implements the AlphaTransactionalObject interface.

It does the following things:

  1. All managed fields are removed (copied to the tranlocal).
  2. All instance methods become transactional methods.
  3. All method content is moved to the tranlocal version of the method

An instance should not be reused.

The constructor of the donor is not copied. So what out with relying on a constructor in the donor. The TransactionalObjectTransformer is not responsible for making methods transactional, that is the task of the TransactionalMethodInstrumentationPhase

Author:
Peter Veentjer

Field Summary
 
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_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, 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, 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, INVOKEDYNAMIC_OWNER, 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
 
Constructor Summary
TransactionalObjectTransformer(ClassLoader classLoader, org.objectweb.asm.tree.ClassNode originalClass, org.objectweb.asm.tree.ClassNode mixinClassNode, org.multiverse.instrumentation.metadata.MetadataRepository metadataRepository)
           
 
Method Summary
 org.objectweb.asm.tree.ClassNode transform()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TransactionalObjectTransformer

public TransactionalObjectTransformer(ClassLoader classLoader,
                                      org.objectweb.asm.tree.ClassNode originalClass,
                                      org.objectweb.asm.tree.ClassNode mixinClassNode,
                                      org.multiverse.instrumentation.metadata.MetadataRepository metadataRepository)
Method Detail

transform

public org.objectweb.asm.tree.ClassNode transform()


Copyright © 2008-2010 Multiverse. All Rights Reserved.