This file was important
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
package net.runelite.deob.attributes.code.instructions;
|
||||||
|
|
||||||
|
import net.runelite.deob.Field;
|
||||||
|
import net.runelite.deob.attributes.code.Instruction;
|
||||||
|
import net.runelite.deob.attributes.code.InstructionType;
|
||||||
|
import net.runelite.deob.attributes.code.Instructions;
|
||||||
|
import net.runelite.deob.attributes.code.instruction.types.ArrayStoreInstruction;
|
||||||
|
import net.runelite.deob.attributes.code.instruction.types.GetFieldInstruction;
|
||||||
|
import net.runelite.deob.deobfuscators.rename.MappingExecutorUtil;
|
||||||
|
import net.runelite.deob.deobfuscators.rename.ParallelExecutorMapping;
|
||||||
|
import net.runelite.deob.execution.InstructionContext;
|
||||||
|
import net.runelite.deob.execution.StackContext;
|
||||||
|
|
||||||
|
public abstract class ArrayStore extends Instruction implements ArrayStoreInstruction
|
||||||
|
{
|
||||||
|
public ArrayStore(Instructions instructions, InstructionType type, int pc)
|
||||||
|
{
|
||||||
|
super(instructions, type, pc);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Field getMyField(InstructionContext thisIc)
|
||||||
|
{
|
||||||
|
StackContext sctx = thisIc.getPops().get(2);
|
||||||
|
InstructionContext pushed = sctx.getPushed();
|
||||||
|
|
||||||
|
InstructionContext r = MappingExecutorUtil.resolve(pushed, sctx);
|
||||||
|
|
||||||
|
if (r.getInstruction() instanceof GetFieldInstruction)
|
||||||
|
{
|
||||||
|
GetFieldInstruction gf = (GetFieldInstruction) r.getInstruction();
|
||||||
|
Field f = gf.getMyField();
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canMap(InstructionContext thisIc)
|
||||||
|
{
|
||||||
|
return getMyField(thisIc) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void map(ParallelExecutorMapping mapping, InstructionContext ctx, InstructionContext other)
|
||||||
|
{
|
||||||
|
Field myField = this.getMyField(ctx),
|
||||||
|
otherField = ((ArrayStore) other.getInstruction()).getMyField(other);
|
||||||
|
|
||||||
|
mapping.map(myField, otherField);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isSame(InstructionContext thisIc, InstructionContext otherIc)
|
||||||
|
{
|
||||||
|
return thisIc.getInstruction().getClass() == otherIc.getInstruction().getClass();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user