62 import jdk.internal.org.objectweb.asm.AnnotationVisitor;
63 import jdk.internal.org.objectweb.asm.Handle;
64 import jdk.internal.org.objectweb.asm.Label;
65 import jdk.internal.org.objectweb.asm.MethodVisitor;
66 import jdk.internal.org.objectweb.asm.Opcodes;
67 import jdk.internal.org.objectweb.asm.TypePath;
68
69 /**
70 * A {@link LocalVariablesSorter} for type mapping.
71 *
72 * @deprecated use {@link MethodRemapper} instead.
73 * @author Eugene Kuleshov
74 */
75 @Deprecated
76 public class RemappingMethodAdapter extends LocalVariablesSorter {
77
78 protected final Remapper remapper;
79
80 public RemappingMethodAdapter(final int access, final String desc,
81 final MethodVisitor mv, final Remapper remapper) {
82 this(Opcodes.ASM5, access, desc, mv, remapper);
83 }
84
85 protected RemappingMethodAdapter(final int api, final int access,
86 final String desc, final MethodVisitor mv, final Remapper remapper) {
87 super(api, access, desc, mv);
88 this.remapper = remapper;
89 }
90
91 @Override
92 public AnnotationVisitor visitAnnotationDefault() {
93 AnnotationVisitor av = super.visitAnnotationDefault();
94 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
95 }
96
97 @Override
98 public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
99 AnnotationVisitor av = super.visitAnnotation(remapper.mapDesc(desc),
100 visible);
101 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
102 }
108 remapper.mapDesc(desc), visible);
109 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
110 }
111
112 @Override
113 public AnnotationVisitor visitParameterAnnotation(int parameter,
114 String desc, boolean visible) {
115 AnnotationVisitor av = super.visitParameterAnnotation(parameter,
116 remapper.mapDesc(desc), visible);
117 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
118 }
119
120 @Override
121 public void visitFrame(int type, int nLocal, Object[] local, int nStack,
122 Object[] stack) {
123 super.visitFrame(type, nLocal, remapEntries(nLocal, local), nStack,
124 remapEntries(nStack, stack));
125 }
126
127 private Object[] remapEntries(int n, Object[] entries) {
128 for (int i = 0; i < n; i++) {
129 if (entries[i] instanceof String) {
130 Object[] newEntries = new Object[n];
131 if (i > 0) {
132 System.arraycopy(entries, 0, newEntries, 0, i);
133 }
134 do {
135 Object t = entries[i];
136 newEntries[i++] = t instanceof String ? remapper
137 .mapType((String) t) : t;
138 } while (i < n);
139 return newEntries;
140 }
141 }
142 return entries;
143 }
144
145 @Override
146 public void visitFieldInsn(int opcode, String owner, String name,
147 String desc) {
148 super.visitFieldInsn(opcode, remapper.mapType(owner),
149 remapper.mapFieldName(owner, name, desc),
150 remapper.mapDesc(desc));
151 }
152
153 @Deprecated
154 @Override
155 public void visitMethodInsn(final int opcode, final String owner,
156 final String name, final String desc) {
157 if (api >= Opcodes.ASM5) {
158 super.visitMethodInsn(opcode, owner, name, desc);
159 return;
160 }
161 doVisitMethodInsn(opcode, owner, name, desc,
|
62 import jdk.internal.org.objectweb.asm.AnnotationVisitor;
63 import jdk.internal.org.objectweb.asm.Handle;
64 import jdk.internal.org.objectweb.asm.Label;
65 import jdk.internal.org.objectweb.asm.MethodVisitor;
66 import jdk.internal.org.objectweb.asm.Opcodes;
67 import jdk.internal.org.objectweb.asm.TypePath;
68
69 /**
70 * A {@link LocalVariablesSorter} for type mapping.
71 *
72 * @deprecated use {@link MethodRemapper} instead.
73 * @author Eugene Kuleshov
74 */
75 @Deprecated
76 public class RemappingMethodAdapter extends LocalVariablesSorter {
77
78 protected final Remapper remapper;
79
80 public RemappingMethodAdapter(final int access, final String desc,
81 final MethodVisitor mv, final Remapper remapper) {
82 this(Opcodes.ASM6, access, desc, mv, remapper);
83 }
84
85 protected RemappingMethodAdapter(final int api, final int access,
86 final String desc, final MethodVisitor mv, final Remapper remapper) {
87 super(api, access, desc, mv);
88 this.remapper = remapper;
89 }
90
91 @Override
92 public AnnotationVisitor visitAnnotationDefault() {
93 AnnotationVisitor av = super.visitAnnotationDefault();
94 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
95 }
96
97 @Override
98 public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
99 AnnotationVisitor av = super.visitAnnotation(remapper.mapDesc(desc),
100 visible);
101 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
102 }
108 remapper.mapDesc(desc), visible);
109 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
110 }
111
112 @Override
113 public AnnotationVisitor visitParameterAnnotation(int parameter,
114 String desc, boolean visible) {
115 AnnotationVisitor av = super.visitParameterAnnotation(parameter,
116 remapper.mapDesc(desc), visible);
117 return av == null ? av : new RemappingAnnotationAdapter(av, remapper);
118 }
119
120 @Override
121 public void visitFrame(int type, int nLocal, Object[] local, int nStack,
122 Object[] stack) {
123 super.visitFrame(type, nLocal, remapEntries(nLocal, local), nStack,
124 remapEntries(nStack, stack));
125 }
126
127 private Object[] remapEntries(int n, Object[] entries) {
128 if (entries != null) {
129 for (int i = 0; i < n; i++) {
130 if (entries[i] instanceof String) {
131 Object[] newEntries = new Object[n];
132 if (i > 0) {
133 System.arraycopy(entries, 0, newEntries, 0, i);
134 }
135 do {
136 Object t = entries[i];
137 newEntries[i++] = t instanceof String ? remapper
138 .mapType((String) t) : t;
139 } while (i < n);
140 return newEntries;
141 }
142 }
143 }
144 return entries;
145 }
146
147 @Override
148 public void visitFieldInsn(int opcode, String owner, String name,
149 String desc) {
150 super.visitFieldInsn(opcode, remapper.mapType(owner),
151 remapper.mapFieldName(owner, name, desc),
152 remapper.mapDesc(desc));
153 }
154
155 @Deprecated
156 @Override
157 public void visitMethodInsn(final int opcode, final String owner,
158 final String name, final String desc) {
159 if (api >= Opcodes.ASM5) {
160 super.visitMethodInsn(opcode, owner, name, desc);
161 return;
162 }
163 doVisitMethodInsn(opcode, owner, name, desc,
|