diff options
| author | 2025-12-29 15:49:07 +0200 | |
|---|---|---|
| committer | 2025-12-29 15:49:07 +0200 | |
| commit | d688f15a530cbfaae487bc918b2727895fff0b01 (patch) | |
| tree | e14363e13ecf700e8394072acdd19b8e2a027093 /enigma/src/main/java/cuchaz | |
| parent | Bump version (diff) | |
| download | enigma-fork-d688f15a530cbfaae487bc918b2727895fff0b01.tar.gz enigma-fork-d688f15a530cbfaae487bc918b2727895fff0b01.tar.xz enigma-fork-d688f15a530cbfaae487bc918b2727895fff0b01.zip | |
Get rid of unsupported JSR/RET
Diffstat (limited to 'enigma/src/main/java/cuchaz')
| -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 | } | ||