summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/BridgeMarker.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/BridgeMarker.java')
-rw-r--r--src/cuchaz/enigma/analysis/BridgeMarker.java36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/analysis/BridgeMarker.java b/src/cuchaz/enigma/analysis/BridgeMarker.java
new file mode 100644
index 00000000..e80f87dc
--- /dev/null
+++ b/src/cuchaz/enigma/analysis/BridgeMarker.java
@@ -0,0 +1,36 @@
1package cuchaz.enigma.analysis;
2
3import javassist.CtClass;
4import javassist.CtMethod;
5import javassist.bytecode.AccessFlag;
6
7import com.google.common.collect.BiMap;
8
9import cuchaz.enigma.mapping.EntryFactory;
10import cuchaz.enigma.mapping.MethodEntry;
11
12public class BridgeMarker {
13
14 private BiMap<MethodEntry,MethodEntry> m_bridgedMethods;
15
16 public BridgeMarker(BiMap<MethodEntry,MethodEntry> bridgedMethods) {
17 m_bridgedMethods = bridgedMethods;
18 }
19
20 public void markBridges(CtClass c) {
21
22 for (CtMethod method : c.getDeclaredMethods()) {
23 MethodEntry methodEntry = EntryFactory.getMethodEntry(method);
24
25 // is this a bridge method?
26 MethodEntry bridgedMethodEntry = m_bridgedMethods.get(methodEntry);
27 if (bridgedMethodEntry != null) {
28
29 // it's a bridge method! add the bridge flag
30 int flags = method.getMethodInfo().getAccessFlags();
31 flags |= AccessFlag.BRIDGE;
32 method.getMethodInfo().setAccessFlags(flags);
33 }
34 }
35 }
36}