From 2b3c5c52865b40adfa93910d41738242f17338d4 Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 10 Feb 2015 22:10:16 -0500 Subject: add BRIDGE flag to bridge methods --- src/cuchaz/enigma/analysis/BridgeMarker.java | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/cuchaz/enigma/analysis/BridgeMarker.java (limited to 'src/cuchaz/enigma/analysis/BridgeMarker.java') diff --git a/src/cuchaz/enigma/analysis/BridgeMarker.java b/src/cuchaz/enigma/analysis/BridgeMarker.java new file mode 100644 index 0000000..e80f87d --- /dev/null +++ b/src/cuchaz/enigma/analysis/BridgeMarker.java @@ -0,0 +1,36 @@ +package cuchaz.enigma.analysis; + +import javassist.CtClass; +import javassist.CtMethod; +import javassist.bytecode.AccessFlag; + +import com.google.common.collect.BiMap; + +import cuchaz.enigma.mapping.EntryFactory; +import cuchaz.enigma.mapping.MethodEntry; + +public class BridgeMarker { + + private BiMap m_bridgedMethods; + + public BridgeMarker(BiMap bridgedMethods) { + m_bridgedMethods = bridgedMethods; + } + + public void markBridges(CtClass c) { + + for (CtMethod method : c.getDeclaredMethods()) { + MethodEntry methodEntry = EntryFactory.getMethodEntry(method); + + // is this a bridge method? + MethodEntry bridgedMethodEntry = m_bridgedMethods.get(methodEntry); + if (bridgedMethodEntry != null) { + + // it's a bridge method! add the bridge flag + int flags = method.getMethodInfo().getAccessFlags(); + flags |= AccessFlag.BRIDGE; + method.getMethodInfo().setAccessFlags(flags); + } + } + } +} -- cgit v1.2.3