Package org.objectweb.asm.util
Class Textifier
- java.lang.Object
-
- org.objectweb.asm.util.Printer
-
- org.objectweb.asm.util.Textifier
-
-
Field Summary
Fields Modifier and Type Field Description static int
CLASS_DECLARATION
Constant used inappendDescriptor
for class signatures, formatted in default Java notation (non-bytecode)static int
CLASS_SIGNATURE
Constant used inappendDescriptor
for class signatures, formatted in bytecode notationstatic int
FIELD_DESCRIPTOR
Constant used inappendDescriptor
for field descriptors, formatted in bytecode notationstatic int
FIELD_SIGNATURE
Constant used inappendDescriptor
for field signatures, formatted in bytecode notationstatic int
HANDLE_DESCRIPTOR
Constant used inappendDescriptor
for handle descriptors, formatted in bytecode notationstatic int
INTERNAL_NAME
Constant used inappendDescriptor
for internal type names in bytecode notation.protected Map<Label,String>
labelNames
The label names.protected String
ltab
Tab for labels.static int
METHOD_DESCRIPTOR
Constant used inappendDescriptor
for method descriptors, formatted in bytecode notationstatic int
METHOD_SIGNATURE
Constant used inappendDescriptor
for method signatures, formatted in bytecode notationstatic int
PARAMETERS_DECLARATION
Constant used inappendDescriptor
for method parameter signatures, formatted in default Java notation (non-bytecode)protected String
tab
Tab for class members.protected String
tab2
Tab for bytecode instructions.protected String
tab3
Tab for table and lookup switch instructions.static int
TYPE_DECLARATION
Constant used inappendDescriptor
for field or method return value signatures, formatted in default Java notation (non-bytecode)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
appendDescriptor(int type, String desc)
Appends an internal name, a type descriptor or a type signature tobuf
.protected void
appendHandle(Handle h)
Appends the information about the given handle tobuf
.protected void
appendLabel(Label l)
Appends the name of the given label tobuf
.protected Textifier
createTextifier()
Creates a new TraceVisitor instance.static void
main(String[] args)
Prints a disassembled view of the given class to the standard output.void
visit(int version, int access, String name, String signature, String superName, String[] interfaces)
Class header.void
visit(String name, Object value)
Annotation value.Textifier
visitAnnotation(String desc, boolean visible)
Prints a disassembled view of the given annotation.Textifier
visitAnnotation(String name, String desc)
Nested annotation value.Textifier
visitAnnotationDefault()
Method default annotation.void
visitAnnotationEnd()
Annotation end.Textifier
visitArray(String name)
Annotation array value.void
visitAttribute(Attribute attr)
Prints a disassembled view of the given attribute.Textifier
visitClassAnnotation(String desc, boolean visible)
Class annotation.void
visitClassAttribute(Attribute attr)
Class attribute.void
visitClassEnd()
Class end.Printer
visitClassTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Class type annotation.void
visitCode()
Method start.void
visitEnum(String name, String desc, String value)
Annotation enum value.Textifier
visitField(int access, String name, String desc, String signature, Object value)
Class field.Textifier
visitFieldAnnotation(String desc, boolean visible)
Field annotation.void
visitFieldAttribute(Attribute attr)
Field attribute.void
visitFieldEnd()
Field end.void
visitFieldInsn(int opcode, String owner, String name, String desc)
Method instruction.Printer
visitFieldTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Field type annotation.void
visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)
Method stack frame.void
visitIincInsn(int var, int increment)
Method instruction.void
visitInnerClass(String name, String outerName, String innerName, int access)
Class inner name.void
visitInsn(int opcode)
Method instruction.Printer
visitInsnAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Instruction type annotation.void
visitIntInsn(int opcode, int operand)
Method instruction.void
visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)
Method instruction.void
visitJumpInsn(int opcode, Label label)
Method instruction.void
visitLabel(Label label)
Method label.void
visitLdcInsn(Object cst)
Method instruction.void
visitLineNumber(int line, Label start)
Method debug info.void
visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)
Method debug info.Printer
visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String desc, boolean visible)
Local variable type annotation.void
visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
Method instruction.void
visitMaxs(int maxStack, int maxLocals)
Method max stack and max locals.Textifier
visitMethod(int access, String name, String desc, String signature, String[] exceptions)
Class method.Textifier
visitMethodAnnotation(String desc, boolean visible)
Method annotation.void
visitMethodAttribute(Attribute attr)
Method attribute.void
visitMethodEnd()
Method end.void
visitMethodInsn(int opcode, String owner, String name, String desc)
Deprecated.void
visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
Method instruction.Printer
visitMethodTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Method type annotation.void
visitMultiANewArrayInsn(String desc, int dims)
Method instruction.void
visitOuterClass(String owner, String name, String desc)
Class outer class.void
visitParameter(String name, int access)
Method parameter.Textifier
visitParameterAnnotation(int parameter, String desc, boolean visible)
Method parameter annotation.void
visitSource(String file, String debug)
Class source.void
visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)
Method instruction.Printer
visitTryCatchAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Try catch block type annotation.void
visitTryCatchBlock(Label start, Label end, Label handler, String type)
Method exception handler.Textifier
visitTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Prints a disassembled view of the given type annotation.void
visitTypeInsn(int opcode, String type)
Method instruction.void
visitVarInsn(int opcode, int var)
Method instruction.-
Methods inherited from class org.objectweb.asm.util.Printer
appendString, getText, print
-
-
-
-
Field Detail
-
INTERNAL_NAME
public static final int INTERNAL_NAME
Constant used inappendDescriptor
for internal type names in bytecode notation.- See Also:
- Constant Field Values
-
FIELD_DESCRIPTOR
public static final int FIELD_DESCRIPTOR
Constant used inappendDescriptor
for field descriptors, formatted in bytecode notation- See Also:
- Constant Field Values
-
FIELD_SIGNATURE
public static final int FIELD_SIGNATURE
Constant used inappendDescriptor
for field signatures, formatted in bytecode notation- See Also:
- Constant Field Values
-
METHOD_DESCRIPTOR
public static final int METHOD_DESCRIPTOR
Constant used inappendDescriptor
for method descriptors, formatted in bytecode notation- See Also:
- Constant Field Values
-
METHOD_SIGNATURE
public static final int METHOD_SIGNATURE
Constant used inappendDescriptor
for method signatures, formatted in bytecode notation- See Also:
- Constant Field Values
-
CLASS_SIGNATURE
public static final int CLASS_SIGNATURE
Constant used inappendDescriptor
for class signatures, formatted in bytecode notation- See Also:
- Constant Field Values
-
TYPE_DECLARATION
public static final int TYPE_DECLARATION
Constant used inappendDescriptor
for field or method return value signatures, formatted in default Java notation (non-bytecode)- See Also:
- Constant Field Values
-
CLASS_DECLARATION
public static final int CLASS_DECLARATION
Constant used inappendDescriptor
for class signatures, formatted in default Java notation (non-bytecode)- See Also:
- Constant Field Values
-
PARAMETERS_DECLARATION
public static final int PARAMETERS_DECLARATION
Constant used inappendDescriptor
for method parameter signatures, formatted in default Java notation (non-bytecode)- See Also:
- Constant Field Values
-
HANDLE_DESCRIPTOR
public static final int HANDLE_DESCRIPTOR
Constant used inappendDescriptor
for handle descriptors, formatted in bytecode notation- See Also:
- Constant Field Values
-
tab
protected String tab
Tab for class members.
-
tab2
protected String tab2
Tab for bytecode instructions.
-
tab3
protected String tab3
Tab for table and lookup switch instructions.
-
ltab
protected String ltab
Tab for labels.
-
-
Constructor Detail
-
Textifier
public Textifier()
Constructs a newTextifier
. Subclasses must not use this constructor. Instead, they must use theTextifier(int)
version.- Throws:
IllegalStateException
- If a subclass calls this constructor.
-
Textifier
protected Textifier(int api)
Constructs a newTextifier
.- Parameters:
api
- the ASM API version implemented by this visitor. Must be one ofOpcodes.ASM4
orOpcodes.ASM5
.
-
-
Method Detail
-
main
public static void main(String[] args) throws Exception
Prints a disassembled view of the given class to the standard output.Usage: Textifier [-debug] <binary class name or class file name >
- Parameters:
args
- the command line arguments.- Throws:
Exception
- if the class cannot be found, or if an IO exception occurs.
-
visit
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
Description copied from class:Printer
-
visitSource
public void visitSource(String file, String debug)
Description copied from class:Printer
Class source. SeeClassVisitor.visitSource(java.lang.String, java.lang.String)
.- Specified by:
visitSource
in classPrinter
-
visitOuterClass
public void visitOuterClass(String owner, String name, String desc)
Description copied from class:Printer
Class outer class. SeeClassVisitor.visitOuterClass(java.lang.String, java.lang.String, java.lang.String)
.- Specified by:
visitOuterClass
in classPrinter
-
visitClassAnnotation
public Textifier visitClassAnnotation(String desc, boolean visible)
Description copied from class:Printer
Class annotation. SeeClassVisitor.visitAnnotation(java.lang.String, boolean)
.- Specified by:
visitClassAnnotation
in classPrinter
-
visitClassTypeAnnotation
public Printer visitClassTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Description copied from class:Printer
Class type annotation. SeeClassVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitClassTypeAnnotation
in classPrinter
-
visitClassAttribute
public void visitClassAttribute(Attribute attr)
Description copied from class:Printer
Class attribute. SeeClassVisitor.visitAttribute(org.objectweb.asm.Attribute)
.- Specified by:
visitClassAttribute
in classPrinter
-
visitInnerClass
public void visitInnerClass(String name, String outerName, String innerName, int access)
Description copied from class:Printer
Class inner name. SeeClassVisitor.visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int)
.- Specified by:
visitInnerClass
in classPrinter
-
visitField
public Textifier visitField(int access, String name, String desc, String signature, Object value)
Description copied from class:Printer
Class field. SeeClassVisitor.visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object)
.- Specified by:
visitField
in classPrinter
-
visitMethod
public Textifier visitMethod(int access, String name, String desc, String signature, String[] exceptions)
Description copied from class:Printer
Class method. SeeClassVisitor.visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[])
.- Specified by:
visitMethod
in classPrinter
-
visitClassEnd
public void visitClassEnd()
Description copied from class:Printer
Class end. SeeClassVisitor.visitEnd()
.- Specified by:
visitClassEnd
in classPrinter
-
visit
public void visit(String name, Object value)
Description copied from class:Printer
Annotation value. SeeAnnotationVisitor.visit(java.lang.String, java.lang.Object)
.
-
visitEnum
public void visitEnum(String name, String desc, String value)
Description copied from class:Printer
Annotation enum value. SeeAnnotationVisitor.visitEnum(java.lang.String, java.lang.String, java.lang.String)
.
-
visitAnnotation
public Textifier visitAnnotation(String name, String desc)
Description copied from class:Printer
Nested annotation value. SeeAnnotationVisitor.visitAnnotation(java.lang.String, java.lang.String)
.- Specified by:
visitAnnotation
in classPrinter
-
visitArray
public Textifier visitArray(String name)
Description copied from class:Printer
Annotation array value. SeeAnnotationVisitor.visitArray(java.lang.String)
.- Specified by:
visitArray
in classPrinter
-
visitAnnotationEnd
public void visitAnnotationEnd()
Description copied from class:Printer
Annotation end. SeeAnnotationVisitor.visitEnd()
.- Specified by:
visitAnnotationEnd
in classPrinter
-
visitFieldAnnotation
public Textifier visitFieldAnnotation(String desc, boolean visible)
Description copied from class:Printer
Field annotation. SeeFieldVisitor.visitAnnotation(java.lang.String, boolean)
.- Specified by:
visitFieldAnnotation
in classPrinter
-
visitFieldTypeAnnotation
public Printer visitFieldTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Description copied from class:Printer
Field type annotation. SeeFieldVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitFieldTypeAnnotation
in classPrinter
-
visitFieldAttribute
public void visitFieldAttribute(Attribute attr)
Description copied from class:Printer
Field attribute. SeeFieldVisitor.visitAttribute(org.objectweb.asm.Attribute)
.- Specified by:
visitFieldAttribute
in classPrinter
-
visitFieldEnd
public void visitFieldEnd()
Description copied from class:Printer
Field end. SeeFieldVisitor.visitEnd()
.- Specified by:
visitFieldEnd
in classPrinter
-
visitParameter
public void visitParameter(String name, int access)
Description copied from class:Printer
Method parameter. SeeMethodVisitor.visitParameter(String, int)
.- Overrides:
visitParameter
in classPrinter
-
visitAnnotationDefault
public Textifier visitAnnotationDefault()
Description copied from class:Printer
Method default annotation. SeeMethodVisitor.visitAnnotationDefault()
.- Specified by:
visitAnnotationDefault
in classPrinter
-
visitMethodAnnotation
public Textifier visitMethodAnnotation(String desc, boolean visible)
Description copied from class:Printer
Method annotation. SeeMethodVisitor.visitAnnotation(java.lang.String, boolean)
.- Specified by:
visitMethodAnnotation
in classPrinter
-
visitMethodTypeAnnotation
public Printer visitMethodTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Description copied from class:Printer
Method type annotation. SeeMethodVisitor.visitTypeAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitMethodTypeAnnotation
in classPrinter
-
visitParameterAnnotation
public Textifier visitParameterAnnotation(int parameter, String desc, boolean visible)
Description copied from class:Printer
Method parameter annotation. SeeMethodVisitor.visitParameterAnnotation(int, java.lang.String, boolean)
.- Specified by:
visitParameterAnnotation
in classPrinter
-
visitMethodAttribute
public void visitMethodAttribute(Attribute attr)
Description copied from class:Printer
Method attribute. SeeMethodVisitor.visitAttribute(org.objectweb.asm.Attribute)
.- Specified by:
visitMethodAttribute
in classPrinter
-
visitCode
public void visitCode()
Description copied from class:Printer
Method start. SeeMethodVisitor.visitCode()
.
-
visitFrame
public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack)
Description copied from class:Printer
Method stack frame. SeeMethodVisitor.visitFrame(int, int, java.lang.Object[], int, java.lang.Object[])
.- Specified by:
visitFrame
in classPrinter
-
visitInsn
public void visitInsn(int opcode)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitInsn(int)
.
-
visitIntInsn
public void visitIntInsn(int opcode, int operand)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitIntInsn(int, int)
.- Specified by:
visitIntInsn
in classPrinter
-
visitVarInsn
public void visitVarInsn(int opcode, int var)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitVarInsn(int, int)
.- Specified by:
visitVarInsn
in classPrinter
-
visitTypeInsn
public void visitTypeInsn(int opcode, String type)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitTypeInsn(int, java.lang.String)
.- Specified by:
visitTypeInsn
in classPrinter
-
visitFieldInsn
public void visitFieldInsn(int opcode, String owner, String name, String desc)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitFieldInsn(int, java.lang.String, java.lang.String, java.lang.String)
.- Specified by:
visitFieldInsn
in classPrinter
-
visitMethodInsn
@Deprecated public void visitMethodInsn(int opcode, String owner, String name, String desc)
Deprecated.Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String)
.- Overrides:
visitMethodInsn
in classPrinter
-
visitMethodInsn
public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitMethodInsn(int, java.lang.String, java.lang.String, java.lang.String)
.- Overrides:
visitMethodInsn
in classPrinter
-
visitInvokeDynamicInsn
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitInvokeDynamicInsn(java.lang.String, java.lang.String, org.objectweb.asm.Handle, java.lang.Object...)
.- Specified by:
visitInvokeDynamicInsn
in classPrinter
-
visitJumpInsn
public void visitJumpInsn(int opcode, Label label)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitJumpInsn(int, org.objectweb.asm.Label)
.- Specified by:
visitJumpInsn
in classPrinter
-
visitLabel
public void visitLabel(Label label)
Description copied from class:Printer
Method label. SeeMethodVisitor.visitLabel(org.objectweb.asm.Label)
.- Specified by:
visitLabel
in classPrinter
-
visitLdcInsn
public void visitLdcInsn(Object cst)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitLdcInsn(java.lang.Object)
.- Specified by:
visitLdcInsn
in classPrinter
-
visitIincInsn
public void visitIincInsn(int var, int increment)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitIincInsn(int, int)
.- Specified by:
visitIincInsn
in classPrinter
-
visitTableSwitchInsn
public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitTableSwitchInsn(int, int, org.objectweb.asm.Label, org.objectweb.asm.Label...)
.- Specified by:
visitTableSwitchInsn
in classPrinter
-
visitLookupSwitchInsn
public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitLookupSwitchInsn(org.objectweb.asm.Label, int[], org.objectweb.asm.Label[])
.- Specified by:
visitLookupSwitchInsn
in classPrinter
-
visitMultiANewArrayInsn
public void visitMultiANewArrayInsn(String desc, int dims)
Description copied from class:Printer
Method instruction. SeeMethodVisitor.visitMultiANewArrayInsn(java.lang.String, int)
.- Specified by:
visitMultiANewArrayInsn
in classPrinter
-
visitInsnAnnotation
public Printer visitInsnAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Description copied from class:Printer
Instruction type annotation. SeeMethodVisitor.visitInsnAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitInsnAnnotation
in classPrinter
-
visitTryCatchBlock
public void visitTryCatchBlock(Label start, Label end, Label handler, String type)
Description copied from class:Printer
Method exception handler. SeeMethodVisitor.visitTryCatchBlock(org.objectweb.asm.Label, org.objectweb.asm.Label, org.objectweb.asm.Label, java.lang.String)
.- Specified by:
visitTryCatchBlock
in classPrinter
-
visitTryCatchAnnotation
public Printer visitTryCatchAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Description copied from class:Printer
Try catch block type annotation. SeeMethodVisitor.visitTryCatchAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitTryCatchAnnotation
in classPrinter
-
visitLocalVariable
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index)
Description copied from class:Printer
Method debug info. SeeMethodVisitor.visitLocalVariable(java.lang.String, java.lang.String, java.lang.String, org.objectweb.asm.Label, org.objectweb.asm.Label, int)
.- Specified by:
visitLocalVariable
in classPrinter
-
visitLocalVariableAnnotation
public Printer visitLocalVariableAnnotation(int typeRef, TypePath typePath, Label[] start, Label[] end, int[] index, String desc, boolean visible)
Description copied from class:Printer
Local variable type annotation. SeeMethodVisitor.visitTryCatchAnnotation(int, org.objectweb.asm.TypePath, java.lang.String, boolean)
.- Overrides:
visitLocalVariableAnnotation
in classPrinter
-
visitLineNumber
public void visitLineNumber(int line, Label start)
Description copied from class:Printer
Method debug info. SeeMethodVisitor.visitLineNumber(int, org.objectweb.asm.Label)
.- Specified by:
visitLineNumber
in classPrinter
-
visitMaxs
public void visitMaxs(int maxStack, int maxLocals)
Description copied from class:Printer
Method max stack and max locals. SeeMethodVisitor.visitMaxs(int, int)
.
-
visitMethodEnd
public void visitMethodEnd()
Description copied from class:Printer
Method end. SeeMethodVisitor.visitEnd()
.- Specified by:
visitMethodEnd
in classPrinter
-
visitAnnotation
public Textifier visitAnnotation(String desc, boolean visible)
Prints a disassembled view of the given annotation.- Parameters:
desc
- the class descriptor of the annotation class.visible
- true if the annotation is visible at runtime.- Returns:
- a visitor to visit the annotation values.
-
visitTypeAnnotation
public Textifier visitTypeAnnotation(int typeRef, TypePath typePath, String desc, boolean visible)
Prints a disassembled view of the given type annotation.- Parameters:
typeRef
- a reference to the annotated type. SeeTypeReference
.typePath
- the path to the annotated type argument, wildcard bound, array element type, or static inner type within 'typeRef'. May be null if the annotation targets 'typeRef' as a whole.desc
- the class descriptor of the annotation class.visible
- true if the annotation is visible at runtime.- Returns:
- a visitor to visit the annotation values.
-
visitAttribute
public void visitAttribute(Attribute attr)
Prints a disassembled view of the given attribute.- Parameters:
attr
- an attribute.
-
createTextifier
protected Textifier createTextifier()
Creates a new TraceVisitor instance.- Returns:
- a new TraceVisitor.
-
appendDescriptor
protected void appendDescriptor(int type, String desc)
Appends an internal name, a type descriptor or a type signature tobuf
.- Parameters:
type
- indicates if desc is an internal name, a field descriptor, a method descriptor, a class signature, ...desc
- an internal name, type descriptor, or type signature. May be null.
-
appendLabel
protected void appendLabel(Label l)
Appends the name of the given label tobuf
. Creates a new label name if the given label does not yet have one.- Parameters:
l
- a label.
-
-