< prev index next >

src/java.base/share/classes/jdk/internal/org/objectweb/asm/commons/RemappingMethodAdapter.java

Print this page
rev 47452 : imported patch jdk-new-asmv6.patch


  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,


< prev index next >