Add another method
This commit is contained in:
@@ -9,10 +9,6 @@ public class ParallelExecutorMapping
|
|||||||
|
|
||||||
public void map(Object one, Object two)
|
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;
|
assert !map.containsKey(one) || map.get(one) == two;
|
||||||
map.put(one, two);
|
map.put(one, two);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.runelite.deob.execution;
|
package net.runelite.deob.execution;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import net.runelite.deob.Method;
|
import net.runelite.deob.Method;
|
||||||
import net.runelite.deob.attributes.code.instruction.types.ReturnInstruction;
|
import net.runelite.deob.attributes.code.instruction.types.ReturnInstruction;
|
||||||
import net.runelite.deob.attributes.code.instructions.InvokeStatic;
|
import net.runelite.deob.attributes.code.instructions.InvokeStatic;
|
||||||
@@ -56,17 +57,6 @@ public class ParallellMappingExecutor
|
|||||||
p1 = f1.getInstructions().get(f1.getInstructions().size() - 1);
|
p1 = f1.getInstructions().get(f1.getInstructions().size() - 1);
|
||||||
p2 = f2.getInstructions().get(f2.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
|
// 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
|
// that has been done before, so stop both and remove the pending branch
|
||||||
// of the jump
|
// of the jump
|
||||||
@@ -92,6 +82,17 @@ public class ParallellMappingExecutor
|
|||||||
return step();
|
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 e.paused;
|
||||||
assert e2.paused;
|
assert e2.paused;
|
||||||
|
|
||||||
@@ -119,6 +120,10 @@ public class ParallellMappingExecutor
|
|||||||
assert i.getInstruction() instanceof InvokeStatic;
|
assert i.getInstruction() instanceof InvokeStatic;
|
||||||
|
|
||||||
InvokeStatic is = (InvokeStatic) i.getInstruction();
|
InvokeStatic is = (InvokeStatic) i.getInstruction();
|
||||||
|
List<Method> methods = is.getMethods();
|
||||||
|
if (methods.isEmpty()) // not my method
|
||||||
|
return null;
|
||||||
|
|
||||||
Method to = is.getMethods().get(0);
|
Method to = is.getMethods().get(0);
|
||||||
|
|
||||||
Frame f2 = new Frame(e, to);
|
Frame f2 = new Frame(e, to);
|
||||||
|
|||||||
@@ -10,6 +10,12 @@ import org.junit.Test;
|
|||||||
|
|
||||||
public class MapStaticTest
|
public class MapStaticTest
|
||||||
{
|
{
|
||||||
|
private static final String methods[][] = {
|
||||||
|
{ "client.vmethod3054", "client.vmethod2973" },
|
||||||
|
{ "class99.method2220", "class99.method2149" },
|
||||||
|
{ "class146.vmethod3158", "class146.vmethod3070" },
|
||||||
|
};
|
||||||
|
|
||||||
//@Test
|
//@Test
|
||||||
public void testMappable() throws IOException
|
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
|
@Test
|
||||||
public void test() throws IOException
|
public void test() throws IOException
|
||||||
{
|
{
|
||||||
ClassGroup group1 = JarUtil.loadJar(new File("c:/rs/adamin1.jar"));
|
ClassGroup group1 = JarUtil.loadJar(new File("d:/rs/07/adamin1.jar"));
|
||||||
ClassGroup group2 = JarUtil.loadJar(new File("c:/rs/adamin2.jar"));
|
ClassGroup group2 = JarUtil.loadJar(new File("d:/rs/07/adamin2.jar"));
|
||||||
|
|
||||||
Method m1 = group1.findClass("client").findMethod("vmethod3054");
|
Method m1 = group1.findClass("class146").findMethod("vmethod3158");
|
||||||
Method m2 = group2.findClass("client").findMethod("vmethod2973");
|
Method m2 = group2.findClass("class146").findMethod("vmethod3070");
|
||||||
|
|
||||||
ParallelExecutorMapping mappings = MappingExecutorUtil.map(m1, m2);
|
ParallelExecutorMapping mappings = MappingExecutorUtil.map(m1, m2);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user