net.sf.retrotranslator.transformer
Class InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor

java.lang.Object
  extended by net.sf.retrotranslator.transformer.AbstractMethodVisitor
      extended by net.sf.retrotranslator.transformer.InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor
All Implemented Interfaces:
MethodVisitor
Enclosing class:
InstantiationAnalysisVisitor

private class InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor
extends AbstractMethodVisitor


Field Summary
private  boolean active
           
private  int allocationIndex
           
private  InstantiationFrame currentFrame
           
private  InstantiationPoint currentPoint
           
private  int duplicationIndex
           
private  java.util.Map<Label,InstantiationFrame> frames
           
private  int initializationIndex
           
private  java.lang.String methodDesc
           
private  java.lang.String methodName
           
private  java.util.List<InstantiationPoint> points
           
 
Fields inherited from class net.sf.retrotranslator.transformer.AbstractMethodVisitor
mv
 
Constructor Summary
InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor(MethodVisitor visitor, java.lang.String methodName, java.lang.String methodDesc)
           
 
Method Summary
protected  void flush()
           
private  void saveFrame(Label label)
           
private  void saveFrames(Label label, Label[] labels)
           
 void visitEnd()
          Visits the end of the method.
 void visitInsn(int opcode)
          Visits a zero operand instruction.
 void visitJumpInsn(int opcode, Label label)
          Visits a jump instruction.
 void visitLabel(Label label)
          Visits a label.
 void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
          Visits a LOOKUPSWITCH instruction.
 void visitMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
          Visits a method instruction.
 void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels)
          Visits a TABLESWITCH instruction.
 void visitTypeInsn(int opcode, java.lang.String desc)
          Visits a type instruction.
 
Methods inherited from class net.sf.retrotranslator.transformer.AbstractMethodVisitor
visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitFieldInsn, visitIincInsn, visitIntInsn, visitLdcInsn, visitLineNumber, visitLocalVariable, visitMaxs, visitMultiANewArrayInsn, visitParameterAnnotation, visitTryCatchBlock, visitVarInsn
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

points

private final java.util.List<InstantiationPoint> points

frames

private final java.util.Map<Label,InstantiationFrame> frames

currentFrame

private InstantiationFrame currentFrame

methodName

private final java.lang.String methodName

methodDesc

private final java.lang.String methodDesc

active

private boolean active

currentPoint

private InstantiationPoint currentPoint

allocationIndex

private int allocationIndex

duplicationIndex

private int duplicationIndex

initializationIndex

private int initializationIndex
Constructor Detail

InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor

public InstantiationAnalysisVisitor.InstantiationAnalysisMethodVisitor(MethodVisitor visitor,
                                                                       java.lang.String methodName,
                                                                       java.lang.String methodDesc)
Method Detail

flush

protected void flush()
Specified by:
flush in class AbstractMethodVisitor

visitLabel

public void visitLabel(Label label)
Description copied from interface: MethodVisitor
Visits a label. A label designates the instruction that will be visited just after it.

Specified by:
visitLabel in interface MethodVisitor
Overrides:
visitLabel in class AbstractMethodVisitor
Parameters:
label - a Label object.

visitJumpInsn

public void visitJumpInsn(int opcode,
                          Label label)
Description copied from interface: MethodVisitor
Visits a jump instruction. A jump instruction is an instruction that may jump to another instruction.

Specified by:
visitJumpInsn in interface MethodVisitor
Overrides:
visitJumpInsn in class AbstractMethodVisitor
Parameters:
opcode - the opcode of the type instruction to be visited. This opcode is either IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, GOTO, JSR, IFNULL or IFNONNULL.
label - the operand of the instruction to be visited. This operand is a label that designates the instruction to which the jump instruction may jump.

visitLookupSwitchInsn

public void visitLookupSwitchInsn(Label dflt,
                                  int[] keys,
                                  Label[] labels)
Description copied from interface: MethodVisitor
Visits a LOOKUPSWITCH instruction.

Specified by:
visitLookupSwitchInsn in interface MethodVisitor
Overrides:
visitLookupSwitchInsn in class AbstractMethodVisitor
Parameters:
dflt - beginning of the default handler block.
keys - the values of the keys.
labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the keys[i] key.

visitTableSwitchInsn

public void visitTableSwitchInsn(int min,
                                 int max,
                                 Label dflt,
                                 Label[] labels)
Description copied from interface: MethodVisitor
Visits a TABLESWITCH instruction.

Specified by:
visitTableSwitchInsn in interface MethodVisitor
Overrides:
visitTableSwitchInsn in class AbstractMethodVisitor
Parameters:
min - the minimum key value.
max - the maximum key value.
dflt - beginning of the default handler block.
labels - beginnings of the handler blocks. labels[i] is the beginning of the handler block for the min + i key.

saveFrames

private void saveFrames(Label label,
                        Label[] labels)

saveFrame

private void saveFrame(Label label)

visitTypeInsn

public void visitTypeInsn(int opcode,
                          java.lang.String desc)
Description copied from interface: MethodVisitor
Visits a type instruction. A type instruction is an instruction that takes a type descriptor as parameter.

Specified by:
visitTypeInsn in interface MethodVisitor
Overrides:
visitTypeInsn in class AbstractMethodVisitor
Parameters:
opcode - the opcode of the type instruction to be visited. This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.
desc - the operand of the instruction to be visited. This operand is must be a fully qualified class name in internal form, or the type descriptor of an array type (see Type).

visitInsn

public void visitInsn(int opcode)
Description copied from interface: MethodVisitor
Visits a zero operand instruction.

Specified by:
visitInsn in interface MethodVisitor
Overrides:
visitInsn in class AbstractMethodVisitor
Parameters:
opcode - the opcode of the instruction to be visited. This opcode is either NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1, FCONST_2, DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE, POP, POP2, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW, MONITORENTER, or MONITOREXIT.

visitMethodInsn

public void visitMethodInsn(int opcode,
                            java.lang.String owner,
                            java.lang.String name,
                            java.lang.String desc)
Description copied from interface: MethodVisitor
Visits a method instruction. A method instruction is an instruction that invokes a method.

Specified by:
visitMethodInsn in interface MethodVisitor
Overrides:
visitMethodInsn in class AbstractMethodVisitor
Parameters:
opcode - the opcode of the type instruction to be visited. This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
owner - the internal name of the method's owner class (see getInternalName).
name - the method's name.
desc - the method's descriptor (see Type).

visitEnd

public void visitEnd()
Description copied from interface: MethodVisitor
Visits the end of the method. This method, which is the last one to be called, is used to inform the visitor that all the annotations and attributes of the method have been visited.

Specified by:
visitEnd in interface MethodVisitor
Overrides:
visitEnd in class AbstractMethodVisitor