FileDocCategorySizeDatePackage
PrintCodeVisitor.javaAPI DocGlassfish v2 API17964Thu Mar 02 11:51:18 GMT 2006oracle.toplink.libraries.asm.util

PrintCodeVisitor

public abstract class PrintCodeVisitor extends Object implements CodeVisitor
An abstract code visitor that prints the code it visits. Each visitXXX method clears the {@link #buf buf} buffer, calls the corresponding printXXX method, and then adds the buffer's content to the {@link #text text} list. In order to provide a concrete print code visitor, one must implement the printXXX methods in a sub class of this class. Each method should print the instructions it visits in {@link #buf buf}.
author
Eric Bruneton, Eugene Kuleshov

Fields Summary
protected final List
text
The text to be printed. See {@link PrintClassVisitor#text text}.
protected final StringBuffer
buf
A buffer used to convert instructions to strings.
public static final String[]
OPCODES
The names of the Java Virtual Machine opcodes.
Constructors Summary
protected PrintCodeVisitor()
Constructs a new {@link PrintCodeVisitor PrintCodeVisitor} object.


            

     
    this.buf = new StringBuffer();
    this.text = new ArrayList();
  
Methods Summary
public java.util.ListgetText()
Returns the code printed by this code visitor.

return
the code printed by this code visitor. See {@link PrintClassVisitor#text text}.

    return text;
  
public abstract voidprintAttribute(oracle.toplink.libraries.asm.Attribute attr)
Prints a non standard code attribute.

param
attr a non standard code attribute.

public abstract voidprintFieldInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
Prints a field instruction. A field instruction is an instruction that loads or stores the value of a field of an object.

param
opcode the opcode of the type instruction to be printed. This opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.
param
owner the internal name of the field's owner class (see {@link oracle.toplink.libraries.asm.Type#getInternalName() getInternalName}).
param
name the field's name.
param
desc the field's descriptor (see {@link oracle.toplink.libraries.asm.Type Type}).

public abstract voidprintIincInsn(int var, int increment)
Prints an IINC instruction.

param
var index of the local variable to be incremented.
param
increment amount to increment the local variable by.

public abstract voidprintInsn(int opcode)
Prints a zero operand instruction.

param
opcode the opcode of the instruction to be printed. 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.

public abstract voidprintIntInsn(int opcode, int operand)
Prints an instruction with a single int operand.

param
opcode the opcode of the instruction to be printed. This opcode is either BIPUSH, SIPUSH or NEWARRAY.
param
operand the operand of the instruction to be printed.

public abstract voidprintJumpInsn(int opcode, oracle.toplink.libraries.asm.Label label)
Prints a jump instruction. A jump instruction is an instruction that may jump to another instruction.

param
opcode the opcode of the type instruction to be printed. 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.
param
label the operand of the instruction to be printed. This operand is a label that designates the instruction to which the jump instruction may jump.

public abstract voidprintLabel(oracle.toplink.libraries.asm.Label label)
Prints a label. A label designates the instruction that will be visited just after it.

param
label a {@link Label Label} object.

public abstract voidprintLdcInsn(java.lang.Object cst)
Prints a LDC instruction.

param
cst the constant to be loaded on the stack. This parameter must be a non null {@link java.lang.Integer Integer}, a {@link java.lang.Float Float}, a {@link java.lang.Long Long}, a {@link java.lang.Double Double} or a {@link String String}.

public abstract voidprintLineNumber(int line, oracle.toplink.libraries.asm.Label start)
Prints a line number declaration.

param
line a line number. This number refers to the source file from which the class was compiled.
param
start the first instruction corresponding to this line number.

public abstract voidprintLocalVariable(java.lang.String name, java.lang.String desc, oracle.toplink.libraries.asm.Label start, oracle.toplink.libraries.asm.Label end, int index)
Prints a local variable declaration.

param
name the name of a local variable.
param
desc the type descriptor of this local variable.
param
start the first instruction corresponding to the scope of this local variable (inclusive).
param
end the last instruction corresponding to the scope of this local variable (exclusive).
param
index the local variable's index.

public abstract voidprintLookupSwitchInsn(oracle.toplink.libraries.asm.Label dflt, int[] keys, oracle.toplink.libraries.asm.Label[] labels)
Prints a LOOKUPSWITCH instruction.

param
dflt beginning of the default handler block.
param
keys the values of the keys.
param
labels beginnings of the handler blocks. labels[i] is the beginning of the handler block for the keys[i] key.

public abstract voidprintMaxs(int maxStack, int maxLocals)
Prints the maximum stack size and the maximum number of local variables of the method.

param
maxStack maximum stack size of the method.
param
maxLocals maximum number of local variables for the method.

public abstract voidprintMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)
Prints a method instruction. A method instruction is an instruction that invokes a method.

param
opcode the opcode of the type instruction to be printed. This opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or INVOKEINTERFACE.
param
owner the internal name of the method's owner class (see {@link oracle.toplink.libraries.asm.Type#getInternalName() getInternalName}).
param
name the method's name.
param
desc the method's descriptor (see {@link oracle.toplink.libraries.asm.Type Type}).

public abstract voidprintMultiANewArrayInsn(java.lang.String desc, int dims)
Prints a MULTIANEWARRAY instruction.

param
desc an array type descriptor (see {@link oracle.toplink.libraries.asm.Type Type}).
param
dims number of dimensions of the array to allocate.

public abstract voidprintTableSwitchInsn(int min, int max, oracle.toplink.libraries.asm.Label dflt, oracle.toplink.libraries.asm.Label[] labels)
Prints a TABLESWITCH instruction.

param
min the minimum key value.
param
max the maximum key value.
param
dflt beginning of the default handler block.
param
labels beginnings of the handler blocks. labels[i] is the beginning of the handler block for the min + i key.

public abstract voidprintTryCatchBlock(oracle.toplink.libraries.asm.Label start, oracle.toplink.libraries.asm.Label end, oracle.toplink.libraries.asm.Label handler, java.lang.String type)
Prints a try catch block.

param
start beginning of the exception handler's scope (inclusive).
param
end end of the exception handler's scope (exclusive).
param
handler beginning of the exception handler's code.
param
type internal name of the type of exceptions handled by the handler, or null to catch any exceptions (for "finally" blocks).

public abstract voidprintTypeInsn(int opcode, java.lang.String desc)
Prints a type instruction. A type instruction is an instruction that takes a type descriptor as parameter.

param
opcode the opcode of the type instruction to be printed. This opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.
param
desc the operand of the instruction to be printed. This operand is must be a fully qualified class name in internal form, or a the type descriptor of an array type (see {@link oracle.toplink.libraries.asm.Type Type}).

public abstract voidprintVarInsn(int opcode, int var)
Prints a local variable instruction. A local variable instruction is an instruction that loads or stores the value of a local variable.

param
opcode the opcode of the local variable instruction to be printed. This opcode is either ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE or RET.
param
var the operand of the instruction to be printed. This operand is the index of a local variable.

public voidvisitAttribute(oracle.toplink.libraries.asm.Attribute attr)

    buf.setLength(0);
    printAttribute(attr);
    text.add(buf.toString());
  
public voidvisitFieldInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)

    buf.setLength(0);
    printFieldInsn(opcode, owner, name, desc);
    text.add(buf.toString());
  
public voidvisitIincInsn(int var, int increment)

    buf.setLength(0);
    printIincInsn(var, increment);
    text.add(buf.toString());
  
public voidvisitInsn(int opcode)

    buf.setLength(0);
    printInsn(opcode);
    text.add(buf.toString());
  
public voidvisitIntInsn(int opcode, int operand)

    buf.setLength(0);
    printIntInsn(opcode, operand);
    text.add(buf.toString());
  
public voidvisitJumpInsn(int opcode, oracle.toplink.libraries.asm.Label label)

    buf.setLength(0);
    printJumpInsn(opcode, label);
    text.add(buf.toString());
  
public voidvisitLabel(oracle.toplink.libraries.asm.Label label)

    buf.setLength(0);
    printLabel(label);
    text.add(buf.toString());
  
public voidvisitLdcInsn(java.lang.Object cst)

    buf.setLength(0);
    printLdcInsn(cst);
    text.add(buf.toString());
  
public voidvisitLineNumber(int line, oracle.toplink.libraries.asm.Label start)

    buf.setLength(0);
    printLineNumber(line, start);
    text.add(buf.toString());
  
public voidvisitLocalVariable(java.lang.String name, java.lang.String desc, oracle.toplink.libraries.asm.Label start, oracle.toplink.libraries.asm.Label end, int index)

    buf.setLength(0);
    printLocalVariable(name, desc, start, end, index);
    text.add(buf.toString());
  
public voidvisitLookupSwitchInsn(oracle.toplink.libraries.asm.Label dflt, int[] keys, oracle.toplink.libraries.asm.Label[] labels)

    buf.setLength(0);
    printLookupSwitchInsn(dflt, keys, labels);
    text.add(buf.toString());
  
public voidvisitMaxs(int maxStack, int maxLocals)

    buf.setLength(0);
    printMaxs(maxStack, maxLocals);
    text.add(buf.toString());
  
public voidvisitMethodInsn(int opcode, java.lang.String owner, java.lang.String name, java.lang.String desc)

    buf.setLength(0);
    printMethodInsn(opcode, owner, name, desc);
    text.add(buf.toString());
  
public voidvisitMultiANewArrayInsn(java.lang.String desc, int dims)

    buf.setLength(0);
    printMultiANewArrayInsn(desc, dims);
    text.add(buf.toString());
  
public voidvisitTableSwitchInsn(int min, int max, oracle.toplink.libraries.asm.Label dflt, oracle.toplink.libraries.asm.Label[] labels)

    buf.setLength(0);
    printTableSwitchInsn(min, max, dflt, labels);
    text.add(buf.toString());
  
public voidvisitTryCatchBlock(oracle.toplink.libraries.asm.Label start, oracle.toplink.libraries.asm.Label end, oracle.toplink.libraries.asm.Label handler, java.lang.String type)

    buf.setLength(0);
    printTryCatchBlock(start, end, handler, type);
    text.add(buf.toString());
  
public voidvisitTypeInsn(int opcode, java.lang.String desc)

    buf.setLength(0);
    printTypeInsn(opcode, desc);
    text.add(buf.toString());
  
public voidvisitVarInsn(int opcode, int var)

    buf.setLength(0);
    printVarInsn(opcode, var);
    text.add(buf.toString());