From 448685653e90415ebe10b08e8335462b81c30421 Mon Sep 17 00:00:00 2001 From: jeff Date: Mon, 2 Feb 2015 21:26:10 -0500 Subject: fix issue with bridge methods --- src/cuchaz/enigma/analysis/BridgeFixer.java | 72 ----------------------------- 1 file changed, 72 deletions(-) delete mode 100644 src/cuchaz/enigma/analysis/BridgeFixer.java (limited to 'src/cuchaz/enigma/analysis/BridgeFixer.java') diff --git a/src/cuchaz/enigma/analysis/BridgeFixer.java b/src/cuchaz/enigma/analysis/BridgeFixer.java deleted file mode 100644 index ad23b00..0000000 --- a/src/cuchaz/enigma/analysis/BridgeFixer.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014 Jeff Martin. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the GNU Public License v3.0 - * which accompanies this distribution, and is available at - * http://www.gnu.org/licenses/gpl.html - * - * Contributors: - * Jeff Martin - initial API and implementation - ******************************************************************************/ -package cuchaz.enigma.analysis; - -import javassist.CtClass; -import javassist.CtMethod; -import javassist.bytecode.ConstPool; -import javassist.bytecode.Descriptor; -import cuchaz.enigma.bytecode.ConstPoolEditor; -import cuchaz.enigma.mapping.BehaviorEntry; -import cuchaz.enigma.mapping.BehaviorEntryFactory; -import cuchaz.enigma.mapping.ClassEntry; -import cuchaz.enigma.mapping.MethodEntry; - -public class BridgeFixer { - - private JarIndex m_index; - - public BridgeFixer(JarIndex index) { - m_index = index; - } - - public void fixBridges(CtClass c) { - // rename declared methods - for (CtMethod method : c.getDeclaredMethods()) { - // get the method entry - MethodEntry methodEntry = new MethodEntry( - new ClassEntry(Descriptor.toJvmName(c.getName())), - method.getName(), - method.getSignature() - ); - MethodEntry bridgeMethodEntry = m_index.getBridgeMethod(methodEntry); - if (bridgeMethodEntry != null) { - // fix this bridged method - method.setName(bridgeMethodEntry.getName()); - } - } - - // rename method references - // translate all the field and method references in the code by editing the constant pool - ConstPool constants = c.getClassFile().getConstPool(); - ConstPoolEditor editor = new ConstPoolEditor(constants); - for (int i = 1; i < constants.getSize(); i++) { - switch (constants.getTag(i)) { - case ConstPool.CONST_Methodref: - case ConstPool.CONST_InterfaceMethodref: { - BehaviorEntry behaviorEntry = BehaviorEntryFactory.create(Descriptor.toJvmName(editor.getMemberrefClassname(i)), editor.getMemberrefName(i), editor.getMemberrefType(i)); - - if (behaviorEntry instanceof MethodEntry) { - MethodEntry methodEntry = (MethodEntry)behaviorEntry; - - // translate the name and type - MethodEntry bridgeMethodEntry = m_index.getBridgeMethod(methodEntry); - if (bridgeMethodEntry != null) { - // FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT FIXIT - editor.changeMemberrefNameAndType(i, bridgeMethodEntry.getName(), bridgeMethodEntry.getSignature()); - } - } - } - break; - } - } - } -} -- cgit v1.2.3