Skip to content
This repository was archived by the owner on May 12, 2024. It is now read-only.

Commit b7fee7d

Browse files
committed
Fix bridge uniqueness
1 parent 0c3db9a commit b7fee7d

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

src/main/java/net/raphimc/javadowngrader/transformer/DowngradingTransformer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333

3434
public abstract class DowngradingTransformer {
3535

36+
private static final String BRIDGE_PREFIX = "javadowngrader-bridge$";
37+
3638
private final int sourceVersion;
3739
private final int targetVersion;
3840

@@ -75,6 +77,11 @@ public void transform(final ClassNode classNode) {
7577
this.preTransform(classNode);
7678

7779
int bridge = 100;
80+
for (final MethodNode methodNode : classNode.methods) {
81+
if (methodNode.name.startsWith(BRIDGE_PREFIX)) {
82+
bridge = Integer.parseInt(methodNode.name.substring(BRIDGE_PREFIX.length())) + 1;
83+
}
84+
}
7885

7986
if (!this.methodCallReplacers.isEmpty()) {
8087
for (MethodNode methodNode : new ArrayList<>(classNode.methods)) {
@@ -107,7 +114,7 @@ public void transform(final ClassNode classNode) {
107114
final String desc = handle.getTag() == Opcodes.H_INVOKESTATIC || handle.getTag() == Opcodes.H_GETSTATIC || handle.getTag() == Opcodes.H_PUTSTATIC
108115
? handle.getDesc()
109116
: "(L" + handle.getOwner() + ';' + handle.getDesc().substring(1);
110-
final MethodNode bridgeMethod = new MethodNode(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC | Opcodes.ACC_SYNTHETIC, "javadowngrader-bridge$" + (bridge++), desc, null, null);
117+
final MethodNode bridgeMethod = new MethodNode(Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC | Opcodes.ACC_SYNTHETIC, BRIDGE_PREFIX + (bridge++), desc, null, null);
111118
final Type[] argumentTypes = Type.getArgumentTypes(desc);
112119
for (int i1 = 0; i1 < argumentTypes.length; i1++) {
113120
bridgeMethod.instructions.add(new VarInsnNode(argumentTypes[i1].getOpcode(Opcodes.ILOAD), i1));

0 commit comments

Comments
 (0)