public class StaticInitMerger extends ClassVisitor
ClassVisitor
that merges <clinit> methods into a single one. All the existing
<clinit> methods are renamed, and a new one is created, which calls all the renamed
methods.api, cv
Modifier | Constructor and Description |
---|---|
protected |
StaticInitMerger(int api,
String prefix,
ClassVisitor classVisitor)
Constructs a new
StaticInitMerger . |
|
StaticInitMerger(String prefix,
ClassVisitor classVisitor)
Constructs a new
StaticInitMerger . |
Modifier and Type | Method and Description |
---|---|
void |
visit(int version,
int access,
String name,
String signature,
String superName,
String[] interfaces)
Visits the header of the class.
|
void |
visitEnd()
Visits the end of the class.
|
MethodVisitor |
visitMethod(int access,
String name,
String descriptor,
String signature,
String[] exceptions)
Visits a method of the class.
|
visitAnnotation, visitAttribute, visitField, visitInnerClass, visitModule, visitNestHostExperimental, visitNestMemberExperimental, visitOuterClass, visitSource, visitTypeAnnotation
public StaticInitMerger(String prefix, ClassVisitor classVisitor)
StaticInitMerger
. Subclasses must not use this constructor.
Instead, they must use the StaticInitMerger(int, String, ClassVisitor)
version.prefix
- the prefix to use to rename the existing <clinit> methods.classVisitor
- the class visitor to which this visitor must delegate method calls. May be
null.protected StaticInitMerger(int api, String prefix, ClassVisitor classVisitor)
StaticInitMerger
.api
- the ASM API version implemented by this visitor. Must be one of Opcodes.ASM4
, Opcodes.ASM5
or Opcodes.ASM6
.prefix
- the prefix to use to rename the existing <clinit> methods.classVisitor
- the class visitor to which this visitor must delegate method calls. May be
null.public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
ClassVisitor
visit
in class ClassVisitor
version
- the class version. The minor version is stored in the 16 most significant bits,
and the major version in the 16 least significant bits.access
- the class's access flags (see Opcodes
). This parameter also indicates if
the class is deprecated.name
- the internal name of the class (see Type.getInternalName()
).signature
- the signature of this class. May be null if the class is not a
generic one, and does not extend or implement generic classes or interfaces.superName
- the internal of name of the super class (see Type.getInternalName()
).
For interfaces, the super class is Object
. May be null, but only for the
Object
class.interfaces
- the internal names of the class's interfaces (see Type.getInternalName()
). May be null.public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions)
ClassVisitor
MethodVisitor
instance (or null) each time it is called, i.e., it should not return a previously
returned visitor.visitMethod
in class ClassVisitor
access
- the method's access flags (see Opcodes
). This parameter also indicates if
the method is synthetic and/or deprecated.name
- the method's name.descriptor
- the method's descriptor (see Type
).signature
- the method's signature. May be null if the method parameters, return
type and exceptions do not use generic types.exceptions
- the internal names of the method's exception classes (see Type.getInternalName()
). May be null.public void visitEnd()
ClassVisitor
visitEnd
in class ClassVisitor
Copyright © 2021. All rights reserved.