summaryrefslogtreecommitdiff
path: root/enigma/src/main/java
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2025-12-29 15:49:07 +0200
committerGravatar Uko Kokņevičs2025-12-29 15:49:07 +0200
commitd688f15a530cbfaae487bc918b2727895fff0b01 (patch)
treee14363e13ecf700e8394072acdd19b8e2a027093 /enigma/src/main/java
parentBump version (diff)
downloadenigma-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')
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classprovider/AddFramesIfNecessaryClassProvider.java2
-rw-r--r--enigma/src/main/java/cuchaz/enigma/classprovider/JSRInlinerClassAdapter.java23
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 @@
1package cuchaz.enigma.classprovider;
2
3import org.objectweb.asm.ClassVisitor;
4import org.objectweb.asm.MethodVisitor;
5import org.objectweb.asm.Opcodes;
6import org.objectweb.asm.commons.JSRInlinerAdapter;
7
8public 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}