org.apache.felix.ipojo.manipulation
Class ConstructorCodeAdapter

java.lang.Object
  extended by org.objectweb.asm.MethodAdapter
      extended by org.objectweb.asm.commons.LocalVariablesSorter
          extended by org.objectweb.asm.commons.GeneratorAdapter
              extended by org.apache.felix.ipojo.manipulation.ConstructorCodeAdapter
All Implemented Interfaces:
org.objectweb.asm.MethodVisitor, org.objectweb.asm.Opcodes

public class ConstructorCodeAdapter
extends org.objectweb.asm.commons.GeneratorAdapter
implements org.objectweb.asm.Opcodes

Constructor Adapter. This class adds an instance manager argument (so switch variable index). Moreover, it adapts field accesses to delegate accesses to the instance manager if needed.

Author:
Felix Project Team

Field Summary
 
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.MethodAdapter
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_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
ConstructorCodeAdapter(org.objectweb.asm.MethodVisitor mv, String owner, Set fields, int access, String name, String desc)
          PropertyCodeAdapter constructor.
 
Method Summary
 org.objectweb.asm.AnnotationVisitor visitAnnotation(String name, boolean visible)
          Visits an annotation.
 void visitFieldInsn(int opcode, String owner, String name, String desc)
          Adapts field accesses.
 void visitIincInsn(int var, int increment)
          Visits an increment instruction.
 void visitLocalVariable(String name, String desc, String signature, org.objectweb.asm.Label start, org.objectweb.asm.Label end, int index)
          Visits a local variable.
 void visitMaxs(int maxStack, int maxLocals)
          Visit max method.
 void visitMethodInsn(int opcode, String owner, String name, String desc)
          Visits a method invocation instruction.
 void visitVarInsn(int opcode, int var)
          Visits a variable instruction.
 
Methods inherited from class org.objectweb.asm.commons.GeneratorAdapter
arrayLength, arrayLoad, arrayStore, box, cast, catchException, checkCast, dup, dup2, dup2X1, dup2X2, dupX1, dupX2, endMethod, getField, getLocalType, 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, 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, visitFrame
 
Methods inherited from class org.objectweb.asm.MethodAdapter
visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitInsn, visitIntInsn, visitJumpInsn, visitLabel, visitLdcInsn, visitLineNumber, visitLookupSwitchInsn, visitMultiANewArrayInsn, visitParameterAnnotation, visitTableSwitchInsn, visitTryCatchBlock, visitTypeInsn
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConstructorCodeAdapter

public ConstructorCodeAdapter(org.objectweb.asm.MethodVisitor mv,
                              String owner,
                              Set fields,
                              int access,
                              String name,
                              String desc)
PropertyCodeAdapter constructor. A new FiledCodeAdapter should be create for each method visit.

Parameters:
mv - the MethodVisitor
owner - the name of the class
fields - the list of contained fields
access - the constructor access
desc - the constructor descriptor
name - the name
Method Detail

visitAnnotation

public org.objectweb.asm.AnnotationVisitor visitAnnotation(String name,
                                                           boolean visible)
Visits an annotation. If the annotation is visible, the annotation is removed. In fact the annotation was already moved to the method replacing this one. If the annotation is not visible, this annotation is kept on this method.

Specified by:
visitAnnotation in interface org.objectweb.asm.MethodVisitor
Overrides:
visitAnnotation in class org.objectweb.asm.MethodAdapter
Parameters:
name - the name of the annotation
visible - the annotation visibility
Returns:
the null if the annotation is visible, otherwise returns MethodAdapter.visitAnnotation(String, boolean)
See Also:
MethodAdapter.visitAnnotation(java.lang.String, boolean)

visitFieldInsn

public void visitFieldInsn(int opcode,
                           String owner,
                           String name,
                           String desc)
Adapts field accesses. If the field is owned by the visited class:

Specified by:
visitFieldInsn in interface org.objectweb.asm.MethodVisitor
Overrides:
visitFieldInsn in class org.objectweb.asm.MethodAdapter
Parameters:
opcode - the visited operation code
owner - the owner of the field
name - the name of the field
desc - the descriptor of the field
See Also:
MethodVisitor.visitFieldInsn(int, String, String, String)

visitMethodInsn

public void visitMethodInsn(int opcode,
                            String owner,
                            String name,
                            String desc)
Visits a method invocation instruction. After the super constructor invocation, insert the _setComponentManager invocation. Otherwise, the method invocation doesn't change

Specified by:
visitMethodInsn in interface org.objectweb.asm.MethodVisitor
Overrides:
visitMethodInsn in class org.objectweb.asm.MethodAdapter
Parameters:
opcode - the opcode
owner - the class owning the invoked method
name - the method name
desc - the method descriptor
See Also:
MethodAdapter.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String)

visitVarInsn

public void visitVarInsn(int opcode,
                         int var)
Visits a variable instruction. This method increments the variable index if it is not this (i.e. 0). This increment is due to the instance manager parameter added in the method signature.

Specified by:
visitVarInsn in interface org.objectweb.asm.MethodVisitor
Overrides:
visitVarInsn in class org.objectweb.asm.commons.LocalVariablesSorter
Parameters:
opcode - the opcode
var - the variable index
See Also:
MethodAdapter.visitVarInsn(int, int)

visitIincInsn

public void visitIincInsn(int var,
                          int increment)
Visits an increment instruction. This method increments the variable index if it is not this (i.e. 0). This increment is due to the instance manager parameter added in the method signature.

Specified by:
visitIincInsn in interface org.objectweb.asm.MethodVisitor
Overrides:
visitIincInsn in class org.objectweb.asm.commons.LocalVariablesSorter
Parameters:
var - the variable index
increment - the increment
See Also:
MethodAdapter.visitIincInsn(int, int)

visitLocalVariable

public void visitLocalVariable(String name,
                               String desc,
                               String signature,
                               org.objectweb.asm.Label start,
                               org.objectweb.asm.Label end,
                               int index)
Visits a local variable. Adds _manager and increment others variable indexes. This variable has the same scope than this and has the 1 index.

Specified by:
visitLocalVariable in interface org.objectweb.asm.MethodVisitor
Overrides:
visitLocalVariable in class org.objectweb.asm.commons.LocalVariablesSorter
Parameters:
name - the variable name
desc - the variable descriptor
signature - the variable signature
start - the beginning label
end - the ending label
index - the variable index
See Also:
MethodAdapter.visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int)

visitMaxs

public void visitMaxs(int maxStack,
                      int maxLocals)
Visit max method. The stack size is incremented of 1. The local variable count is incremented of 2.

Specified by:
visitMaxs in interface org.objectweb.asm.MethodVisitor
Overrides:
visitMaxs in class org.objectweb.asm.commons.LocalVariablesSorter
Parameters:
maxStack - the stack size.
maxLocals - the local variable count.
See Also:
MethodAdapter.visitMaxs(int, int)


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.