|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.objectweb.asm.ClassAdapter
org.codehaus.aspectwerkz.transform.inlining.weaver.ConstructorCallVisitor
public class ConstructorCallVisitor
Instruments ctor CALL join points by replacing INVOKEXXX instructions with invocations of the compiled join point.
It calls the JPClass.invoke static method. The signature of the invoke method is:
invoke(args.., caller) - note: no callee as arg0(The reason why is that it simplifies call pointcut stack management) Note: The Eclipse compiler is generating "catch(exception) NEW DUP_X1 SWAP getMessage newError(..)" hence NEW DUP_X1 is a valid sequence as well, and DUP_X1 is replaced by DUP to preserved the SWAP. Other more complex schemes (DUP_X2) are not implemented (no real test so far)
Nested Class Summary | |
---|---|
static class |
ConstructorCallVisitor.LookaheadNewDupInvokeSpecialInstructionClassAdapter
Lookahead index of NEW instruction for NEW + DUP + INVOKESPECIAL instructions Remember the NEW instruction index Special case when withincode ctor of called ctor: public Foo() { super(new Foo()); } In such a case, it is not possible to intercept the call to new Foo() since this cannot be referenced as long as this(..) or super(..) has not been called. |
static class |
ConstructorCallVisitor.LookaheadNewDupInvokeSpecialInstructionCodeAdapter
|
class |
ConstructorCallVisitor.ReplaceNewInstructionCodeAdapter
Replaces 'new' instructions with a call to the compiled JoinPoint instance. |
Field Summary |
---|
Fields inherited from class org.objectweb.asm.ClassAdapter |
---|
cv |
Fields inherited from interface org.objectweb.asm.Constants |
---|
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, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5 |
Constructor Summary | |
---|---|
ConstructorCallVisitor(org.objectweb.asm.ClassVisitor cv,
ClassLoader loader,
ClassInfo classInfo,
Context ctx,
gnu.trove.TLongObjectHashMap newInvocationsByCallerMemberHash)
Creates a new instance. |
Method Summary | |
---|---|
org.objectweb.asm.CodeVisitor |
visitMethod(int access,
String name,
String desc,
String[] exceptions,
org.objectweb.asm.Attribute attrs)
Visits the caller methods. |
Methods inherited from class org.objectweb.asm.ClassAdapter |
---|
visit, visitAttribute, visitEnd, visitField, visitInnerClass |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ConstructorCallVisitor(org.objectweb.asm.ClassVisitor cv, ClassLoader loader, ClassInfo classInfo, Context ctx, gnu.trove.TLongObjectHashMap newInvocationsByCallerMemberHash)
cv
- loader
- classInfo
- ctx
- Method Detail |
---|
public org.objectweb.asm.CodeVisitor visitMethod(int access, String name, String desc, String[] exceptions, org.objectweb.asm.Attribute attrs)
visitMethod
in interface org.objectweb.asm.ClassVisitor
visitMethod
in class org.objectweb.asm.ClassAdapter
access
- name
- desc
- exceptions
- attrs
-
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |