61 import jdk.internal.org.objectweb.asm.ClassVisitor;
62 import jdk.internal.org.objectweb.asm.MethodVisitor;
63 import jdk.internal.org.objectweb.asm.Opcodes;
64
65 /**
66 * A {@link ClassVisitor} that merges clinit methods into a single one.
67 *
68 * @author Eric Bruneton
69 */
70 public class StaticInitMerger extends ClassVisitor {
71
72 private String name;
73
74 private MethodVisitor clinit;
75
76 private final String prefix;
77
78 private int counter;
79
80 public StaticInitMerger(final String prefix, final ClassVisitor cv) {
81 this(Opcodes.ASM5, prefix, cv);
82 }
83
84 protected StaticInitMerger(final int api, final String prefix,
85 final ClassVisitor cv) {
86 super(api, cv);
87 this.prefix = prefix;
88 }
89
90 @Override
91 public void visit(final int version, final int access, final String name,
92 final String signature, final String superName,
93 final String[] interfaces) {
94 cv.visit(version, access, name, signature, superName, interfaces);
95 this.name = name;
96 }
97
98 @Override
99 public MethodVisitor visitMethod(final int access, final String name,
100 final String desc, final String signature, final String[] exceptions) {
101 MethodVisitor mv;
|
61 import jdk.internal.org.objectweb.asm.ClassVisitor;
62 import jdk.internal.org.objectweb.asm.MethodVisitor;
63 import jdk.internal.org.objectweb.asm.Opcodes;
64
65 /**
66 * A {@link ClassVisitor} that merges clinit methods into a single one.
67 *
68 * @author Eric Bruneton
69 */
70 public class StaticInitMerger extends ClassVisitor {
71
72 private String name;
73
74 private MethodVisitor clinit;
75
76 private final String prefix;
77
78 private int counter;
79
80 public StaticInitMerger(final String prefix, final ClassVisitor cv) {
81 this(Opcodes.ASM6, prefix, cv);
82 }
83
84 protected StaticInitMerger(final int api, final String prefix,
85 final ClassVisitor cv) {
86 super(api, cv);
87 this.prefix = prefix;
88 }
89
90 @Override
91 public void visit(final int version, final int access, final String name,
92 final String signature, final String superName,
93 final String[] interfaces) {
94 cv.visit(version, access, name, signature, superName, interfaces);
95 this.name = name;
96 }
97
98 @Override
99 public MethodVisitor visitMethod(final int access, final String name,
100 final String desc, final String signature, final String[] exceptions) {
101 MethodVisitor mv;
|