public class AnalyzerAdapter
extends org.objectweb.asm.MethodVisitor
MethodVisitor that keeps track of stack map frame changes between visitFrame(int, int, Object[], int, Object[]) calls. This adapter must be used with the ClassReader.EXPAND_FRAMES option. Each visitX instruction delegates to
the next visitor in the chain, if any, and then simulates the effect of this instruction on the
stack map frame, represented by locals and stack. The next visitor in the chain
can get the state of the stack map frame before each instruction by reading the value of
these fields in its visitX methods (this requires a reference to the AnalyzerAdapter that
is before it in the chain). If this adapter is used with a class that does not contain stack map
table attributes (i.e., pre Java 6 classes) then this adapter may not be able to compute the
stack map frame for each instruction. In this case no exception is thrown but the locals
and stack fields will be null for these instructions.| Modifier and Type | Field | Description |
|---|---|---|
java.util.List<java.lang.Object> |
locals |
The local variable slots for the current execution frame.
|
java.util.List<java.lang.Object> |
stack |
The operand stack slots for the current execution frame.
|
java.util.Map<java.lang.Object,java.lang.Object> |
uninitializedTypes |
The uninitialized types in the current execution frame.
|
| Modifier | Constructor | Description |
|---|---|---|
protected |
AnalyzerAdapter(int api,
java.lang.String owner,
int access,
java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.MethodVisitor methodVisitor) |
Constructs a new
AnalyzerAdapter. |
|
AnalyzerAdapter(java.lang.String owner,
int access,
java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.MethodVisitor methodVisitor) |
Constructs a new
AnalyzerAdapter. |
| Modifier and Type | Method | Description |
|---|---|---|
void |
visitFieldInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String descriptor) |
|
void |
visitFrame(int type,
int numLocal,
java.lang.Object[] local,
int numStack,
java.lang.Object[] stack) |
|
void |
visitIincInsn(int varIndex,
int increment) |
|
void |
visitInsn(int opcode) |
|
void |
visitIntInsn(int opcode,
int operand) |
|
void |
visitInvokeDynamicInsn(java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.Handle bootstrapMethodHandle,
java.lang.Object... bootstrapMethodArguments) |
|
void |
visitJumpInsn(int opcode,
org.objectweb.asm.Label label) |
|
void |
visitLabel(org.objectweb.asm.Label label) |
|
void |
visitLdcInsn(java.lang.Object value) |
|
void |
visitLocalVariable(java.lang.String name,
java.lang.String descriptor,
java.lang.String signature,
org.objectweb.asm.Label start,
org.objectweb.asm.Label end,
int index) |
|
void |
visitLookupSwitchInsn(org.objectweb.asm.Label dflt,
int[] keys,
org.objectweb.asm.Label[] labels) |
|
void |
visitMaxs(int maxStack,
int maxLocals) |
|
void |
visitMethodInsn(int opcodeAndSource,
java.lang.String owner,
java.lang.String name,
java.lang.String descriptor,
boolean isInterface) |
|
void |
visitMultiANewArrayInsn(java.lang.String descriptor,
int numDimensions) |
|
void |
visitTableSwitchInsn(int min,
int max,
org.objectweb.asm.Label dflt,
org.objectweb.asm.Label... labels) |
|
void |
visitTypeInsn(int opcode,
java.lang.String type) |
|
void |
visitVarInsn(int opcode,
int varIndex) |
getDelegate, visitAnnotableParameterCount, visitAnnotation, visitAnnotationDefault, visitAttribute, visitCode, visitEnd, visitInsnAnnotation, visitLineNumber, visitLocalVariableAnnotation, visitMethodInsn, visitParameter, visitParameterAnnotation, visitTryCatchAnnotation, visitTryCatchBlock, visitTypeAnnotationpublic java.util.List<java.lang.Object> locals
Opcodes.TOP, Opcodes.INTEGER, Opcodes.FLOAT, Opcodes.LONG,
Opcodes.DOUBLE,Opcodes.NULL or Opcodes.UNINITIALIZED_THIS (long and
double are represented by two elements, the second one being TOP). Reference types are
represented by String objects (representing internal names, see Type.getInternalName()), and uninitialized types by Label objects (this label designates the
NEW instruction that created this uninitialized value). This field is null for
unreachable instructions.public java.util.List<java.lang.Object> stack
Opcodes.TOP, Opcodes.INTEGER, Opcodes.FLOAT, Opcodes.LONG,
Opcodes.DOUBLE,Opcodes.NULL or Opcodes.UNINITIALIZED_THIS (long and
double are represented by two elements, the second one being TOP). Reference types are
represented by String objects (representing internal names, see Type.getInternalName()), and uninitialized types by Label objects (this label designates the
NEW instruction that created this uninitialized value). This field is null for
unreachable instructions.public java.util.Map<java.lang.Object,java.lang.Object> uninitializedTypes
Type.getInternalName()). Each label designates a NEW instruction
that created the currently uninitialized types, and the associated internal name represents the
NEW operand, i.e. the final, initialized type value.public AnalyzerAdapter(java.lang.String owner,
int access,
java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.MethodVisitor methodVisitor)
AnalyzerAdapter. Subclasses must not use this constructor.
Instead, they must use the AnalyzerAdapter(int, String, int, String, String,
MethodVisitor) version.owner - the owner's class name.access - the method's access flags (see Opcodes).name - the method's name.descriptor - the method's descriptor (see Type).methodVisitor - the method visitor to which this adapter delegates calls. May be
null.java.lang.IllegalStateException - If a subclass calls this constructor.protected AnalyzerAdapter(int api,
java.lang.String owner,
int access,
java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.MethodVisitor methodVisitor)
AnalyzerAdapter.api - the ASM API version implemented by this visitor. Must be one of the
ASMx values in Opcodes.owner - the owner's class name.access - the method's access flags (see Opcodes).name - the method's name.descriptor - the method's descriptor (see Type).methodVisitor - the method visitor to which this adapter delegates calls. May be
null.public void visitFrame(int type,
int numLocal,
java.lang.Object[] local,
int numStack,
java.lang.Object[] stack)
visitFrame in class org.objectweb.asm.MethodVisitorpublic void visitInsn(int opcode)
visitInsn in class org.objectweb.asm.MethodVisitorpublic void visitIntInsn(int opcode,
int operand)
visitIntInsn in class org.objectweb.asm.MethodVisitorpublic void visitVarInsn(int opcode,
int varIndex)
visitVarInsn in class org.objectweb.asm.MethodVisitorpublic void visitTypeInsn(int opcode,
java.lang.String type)
visitTypeInsn in class org.objectweb.asm.MethodVisitorpublic void visitFieldInsn(int opcode,
java.lang.String owner,
java.lang.String name,
java.lang.String descriptor)
visitFieldInsn in class org.objectweb.asm.MethodVisitorpublic void visitMethodInsn(int opcodeAndSource,
java.lang.String owner,
java.lang.String name,
java.lang.String descriptor,
boolean isInterface)
visitMethodInsn in class org.objectweb.asm.MethodVisitorpublic void visitInvokeDynamicInsn(java.lang.String name,
java.lang.String descriptor,
org.objectweb.asm.Handle bootstrapMethodHandle,
java.lang.Object... bootstrapMethodArguments)
visitInvokeDynamicInsn in class org.objectweb.asm.MethodVisitorpublic void visitJumpInsn(int opcode,
org.objectweb.asm.Label label)
visitJumpInsn in class org.objectweb.asm.MethodVisitorpublic void visitLabel(org.objectweb.asm.Label label)
visitLabel in class org.objectweb.asm.MethodVisitorpublic void visitLdcInsn(java.lang.Object value)
visitLdcInsn in class org.objectweb.asm.MethodVisitorpublic void visitIincInsn(int varIndex,
int increment)
visitIincInsn in class org.objectweb.asm.MethodVisitorpublic void visitTableSwitchInsn(int min,
int max,
org.objectweb.asm.Label dflt,
org.objectweb.asm.Label... labels)
visitTableSwitchInsn in class org.objectweb.asm.MethodVisitorpublic void visitLookupSwitchInsn(org.objectweb.asm.Label dflt,
int[] keys,
org.objectweb.asm.Label[] labels)
visitLookupSwitchInsn in class org.objectweb.asm.MethodVisitorpublic void visitMultiANewArrayInsn(java.lang.String descriptor,
int numDimensions)
visitMultiANewArrayInsn in class org.objectweb.asm.MethodVisitorpublic void visitLocalVariable(java.lang.String name,
java.lang.String descriptor,
java.lang.String signature,
org.objectweb.asm.Label start,
org.objectweb.asm.Label end,
int index)
visitLocalVariable in class org.objectweb.asm.MethodVisitorpublic void visitMaxs(int maxStack,
int maxLocals)
visitMaxs in class org.objectweb.asm.MethodVisitorCopyright © 2025. All rights reserved.