diff options
Diffstat (limited to 'enigma/src/main/java')
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java | 2 | ||||
| -rw-r--r-- | enigma/src/main/java/cuchaz/enigma/classprovider/JSRInlinerClassAdapter.java | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java b/enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java index d6e4ec7..f976709 100644 --- a/enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java +++ b/enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java | |||
| @@ -40,7 +40,7 @@ public class AddFramesIfNecessaryClassProvider implements ClassProvider { | |||
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | IndexClassWriter cw = new IndexClassWriter(entryIndex, ClassWriter.COMPUTE_FRAMES); | 42 | IndexClassWriter cw = new IndexClassWriter(entryIndex, ClassWriter.COMPUTE_FRAMES); |
| 43 | clazz.accept(cw); | 43 | clazz.accept(new JSRInlinerClassAdapter(cw)); |
| 44 | ClassReader cr = new ClassReader(cw.toByteArray()); | 44 | ClassReader cr = new ClassReader(cw.toByteArray()); |
| 45 | ClassNode node = new ClassNode(); | 45 | ClassNode node = new ClassNode(); |
| 46 | cr.accept(node, 0); | 46 | cr.accept(node, 0); |
diff --git a/enigma/src/main/java/cuchaz/enigma/classprovider/JSRInlinerClassAdapter.java b/enigma/src/main/java/cuchaz/enigma/classprovider/JSRInlinerClassAdapter.java new file mode 100644 index 0000000..5135b72 --- /dev/null +++ b/enigma/src/main/java/cuchaz/enigma/classprovider/JSRInlinerClassAdapter.java | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | package cuchaz.enigma.classprovider; | ||
| 2 | |||
| 3 | import org.objectweb.asm.ClassVisitor; | ||
| 4 | import org.objectweb.asm.MethodVisitor; | ||
| 5 | import org.objectweb.asm.Opcodes; | ||
| 6 | import org.objectweb.asm.commons.JSRInlinerAdapter; | ||
| 7 | |||
| 8 | public class JSRInlinerClassAdapter extends ClassVisitor { | ||
| 9 | public JSRInlinerClassAdapter(ClassVisitor cv) { | ||
| 10 | super(Opcodes.ASM9, cv); | ||
| 11 | } | ||
| 12 | |||
| 13 | @Override | ||
| 14 | public MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) { | ||
| 15 | MethodVisitor mv = cv.visitMethod(access, name, descriptor, signature, exceptions); | ||
| 16 | |||
| 17 | if (mv != null) { | ||
| 18 | mv = new JSRInlinerAdapter(mv, access, name, descriptor, signature, exceptions); | ||
| 19 | } | ||
| 20 | |||
| 21 | return mv; | ||
| 22 | } | ||
| 23 | } | ||