com.tc.object.bytecode.rwsync
Class LockingMethodStrategy

java.lang.Object
  extended by com.tc.object.bytecode.rwsync.LockingMethodStrategy
All Implemented Interfaces:
Opcodes, MethodStrategy
Direct Known Subclasses:
SimpleLockMethodStrategy

public abstract class LockingMethodStrategy
extends java.lang.Object
implements MethodStrategy, Opcodes

Contains constants and utility methods convenient for method instrumentation strategies involving locking with ReentrantReadWriteLocks


Nested Class Summary
static class LockingMethodStrategy.LockType
           
 
Field Summary
protected  java.lang.String lockField
           
protected  java.lang.String lockTypeDesc
           
protected  java.lang.String lockTypeName
           
static java.lang.String THIS$0
           
 
Fields inherited from interface com.tc.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
LockingMethodStrategy(LockingMethodStrategy.LockType lockType)
           
 
Method Summary
static void callRenamedMethod(java.lang.String owner, int access, java.lang.String name, java.lang.String desc, MethodVisitor mv)
          Call the renamed version of a method, using the same parameters and return type as the original.
protected static int getWrappedAttributes(int attr)
          Set access to private and add the "synthetic" attribute.
protected static java.lang.String getWrappedName(java.lang.String name)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.tc.object.bytecode.rwsync.MethodStrategy
visitMethod
 

Field Detail

THIS$0

public static final java.lang.String THIS$0
See Also:
Constant Field Values

lockField

protected final java.lang.String lockField

lockTypeName

protected final java.lang.String lockTypeName

lockTypeDesc

protected final java.lang.String lockTypeDesc
Constructor Detail

LockingMethodStrategy

public LockingMethodStrategy(LockingMethodStrategy.LockType lockType)
Parameters:
lockField - the name of the field that is the lock. If the method owner is an inner class, the read lock field is assumed to belong to the outer class.
Method Detail

getWrappedName

protected static java.lang.String getWrappedName(java.lang.String name)

getWrappedAttributes

protected static int getWrappedAttributes(int attr)
Set access to private and add the "synthetic" attribute. This creates access attributes appropriate for a wrapped method.


callRenamedMethod

public static void callRenamedMethod(java.lang.String owner,
                                     int access,
                                     java.lang.String name,
                                     java.lang.String desc,
                                     MethodVisitor mv)
Call the renamed version of a method, using the same parameters and return type as the original.

TODO: breaks when used with LocalVariablesSorter

Parameters:
owner - the slash-and-dollar-delimited name of the type whose method is being called


Copyright © 2010 Terracotta, Inc.. All Rights Reserved.