Add another method

This commit is contained in:
Adam
2016-01-10 19:00:37 -05:00
parent 6dc905a347
commit f418d95b84
3 changed files with 43 additions and 19 deletions

View File

@@ -9,10 +9,6 @@ public class ParallelExecutorMapping
public void map(Object one, Object two)
{
if (one.toString().equals("Z class6.field120"))
{
int i =5;
}
assert !map.containsKey(one) || map.get(one) == two;
map.put(one, two);
}

View File

@@ -1,5 +1,6 @@
package net.runelite.deob.execution;
import java.util.List;
import net.runelite.deob.Method;
import net.runelite.deob.attributes.code.instruction.types.ReturnInstruction;
import net.runelite.deob.attributes.code.instructions.InvokeStatic;
@@ -55,17 +56,6 @@ public class ParallellMappingExecutor
// get what each frame is paused/exited on
p1 = f1.getInstructions().get(f1.getInstructions().size() - 1);
p2 = f2.getInstructions().get(f2.getInstructions().size() - 1);
if (p1.getInstruction() instanceof InvokeStatic && !(p2.getInstruction() instanceof InvokeStatic))
{
f1 = stepInto(f1);
p1 = f1.getInstructions().get(f1.getInstructions().size() - 1);
}
else if (p2.getInstruction() instanceof InvokeStatic && !(p1.getInstruction() instanceof InvokeStatic))
{
f2 = stepInto(f2);
p2 = f2.getInstructions().get(f2.getInstructions().size() - 1);
}
// frames can stop executing at different times if one sees a jump
// that has been done before, so stop both and remove the pending branch
@@ -91,6 +81,17 @@ public class ParallellMappingExecutor
return step();
}
if (p1.getInstruction() instanceof InvokeStatic && !(p2.getInstruction() instanceof InvokeStatic))
{
f1 = stepInto(f1);
p1 = f1.getInstructions().get(f1.getInstructions().size() - 1);
}
else if (p2.getInstruction() instanceof InvokeStatic && !(p1.getInstruction() instanceof InvokeStatic))
{
f2 = stepInto(f2);
p2 = f2.getInstructions().get(f2.getInstructions().size() - 1);
}
assert e.paused;
assert e2.paused;
@@ -119,6 +120,10 @@ public class ParallellMappingExecutor
assert i.getInstruction() instanceof InvokeStatic;
InvokeStatic is = (InvokeStatic) i.getInstruction();
List<Method> methods = is.getMethods();
if (methods.isEmpty()) // not my method
return null;
Method to = is.getMethods().get(0);
Frame f2 = new Frame(e, to);

View File

@@ -10,6 +10,12 @@ import org.junit.Test;
public class MapStaticTest
{
private static final String methods[][] = {
{ "client.vmethod3054", "client.vmethod2973" },
{ "class99.method2220", "class99.method2149" },
{ "class146.vmethod3158", "class146.vmethod3070" },
};
//@Test
public void testMappable() throws IOException
{
@@ -22,14 +28,31 @@ public class MapStaticTest
// ));
}
//@Test
public void testAll() throws IOException
{
ClassGroup group1 = JarUtil.loadJar(new File("d:/rs/07/adamin1.jar"));
ClassGroup group2 = JarUtil.loadJar(new File("d:/rs/07/adamin2.jar"));
for (String[] s : methods)
{
String[] one = s[0].split("\\."), two = s[1].split("\\.");
Method m1 = group1.findClass(one[0]).findMethod(one[1]);
Method m2 = group2.findClass(two[0]).findMethod(two[1]);
ParallelExecutorMapping mappings = MappingExecutorUtil.map(m1, m2);
}
}
@Test
public void test() throws IOException
{
ClassGroup group1 = JarUtil.loadJar(new File("c:/rs/adamin1.jar"));
ClassGroup group2 = JarUtil.loadJar(new File("c:/rs/adamin2.jar"));
ClassGroup group1 = JarUtil.loadJar(new File("d:/rs/07/adamin1.jar"));
ClassGroup group2 = JarUtil.loadJar(new File("d:/rs/07/adamin2.jar"));
Method m1 = group1.findClass("client").findMethod("vmethod3054");
Method m2 = group2.findClass("client").findMethod("vmethod2973");
Method m1 = group1.findClass("class146").findMethod("vmethod3158");
Method m2 = group2.findClass("class146").findMethod("vmethod3070");
ParallelExecutorMapping mappings = MappingExecutorUtil.map(m1, m2);
}