getScopeDelta separated to getScopePushCount and getScopePopCount

This commit is contained in:
2015-08-23 19:02:52 +02:00
parent 0498fadbb4
commit e3081313d4
180 changed files with 4306 additions and 3897 deletions
File diff suppressed because it is too large Load Diff
@@ -47,7 +47,7 @@ public class CodeStats {
int i = 0;
int ms = 0;
for (InstructionStats stats : instructionStats) {
int deltastack = stats.ins.definition.getStackDelta(stats.ins, abc);
int deltastack = stats.ins.definition.getStackDelta2(stats.ins, abc);
if (stats.stackpos > ms) {
ms = stats.stackpos;
}
@@ -258,7 +258,7 @@ public class AVM2DeobfuscatorSimple implements SWFDecompilerListener {
}
} else {
// do not throw EmptyStackException, much faster
int requiredStackSize = ins.getRequiredStackSize();
int requiredStackSize = ins.getStackPopCount(localData);
if (stack.size() < requiredStackSize) {
return;
}
@@ -364,7 +364,7 @@ public class AVM2DeobfuscatorSimple implements SWFDecompilerListener {
AVM2Instruction tarIns = code.code.get(nidx);
//Some IfType instructions need more than 1 operand, we must pop out all of them
int stackCount = -ins.definition.getStackDelta(ins, abc);
int stackCount = -def.getStackDelta2(ins, abc);
if (EcmaScript.toBoolean(res)) {
//System.err.println("replacing " + ins + " on " + idx + " with jump");
@@ -340,8 +340,8 @@ public class AVM2Instruction implements Cloneable, GraphSourceItem {
aLocalData.constants, this, aLocalData.methodInfo, output, aLocalData.methodBody, aLocalData.abc, aLocalData.localRegNames, aLocalData.fullyQualifiedNames, null, aLocalData.localRegAssignmentIps, aLocalData.ip, aLocalData.refs, aLocalData.code);
}
public int getRequiredStackSize() {
return definition.getRequiredStackSize(this);
public int getStackPopCount(AVM2LocalData aLocalData) {
return definition.getStackPopCount(this, aLocalData.abc);
}
@Override
@@ -45,7 +45,7 @@ public class DeobfuscatePopIns extends PopIns {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -91,7 +91,11 @@ public class InstructionDefinition implements Serializable {
public void translate(boolean isStatic, int scriptIndex, int classIndex, HashMap<Integer, GraphTargetItem> localRegs, TranslateStack stack, ScopeStack scopeStack, AVM2ConstantPool constants, AVM2Instruction ins, List<MethodInfo> method_info, List<GraphTargetItem> output, MethodBody body, ABC abc, HashMap<Integer, String> localRegNames, List<DottedChain> fullyQualifiedNames, String path, HashMap<Integer, Integer> localRegsAssignmentIps, int ip, HashMap<Integer, List<Integer>> refs, AVM2Code code) throws InterruptedException {
}
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 0;
}
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 0;
}
@@ -110,6 +114,25 @@ public class InstructionDefinition implements Serializable {
return new FullMultinameAVM2Item(ins, multinameIndex, name, ns);
}
protected int getMultinameRequiredStackSize(AVM2ConstantPool constants, int multinameIndex) {
int res = 0;
if (multinameIndex > 0 && multinameIndex < constants.constant_multiname.size()) {
//Note: In official compiler, the stack can be wrong(greater) for some MULTINAMEL/A, e.g. increments
/*
var arr=[1,2,3];
return arr[2]++;
*/
if (constants.getMultiname(multinameIndex).needsName()) {
res++;
}
if (constants.getMultiname(multinameIndex).needsNs()) {
res++;
}
}
return res;
}
protected int resolvedCount(AVM2ConstantPool constants, int multinameIndex) {
int pos = 0;
if (constants.getMultiname(multinameIndex).needsNs()) {
@@ -137,8 +160,8 @@ public class InstructionDefinition implements Serializable {
return name + ns;
}
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
public int getStackDelta2(AVM2Instruction ins, ABC abc) {
return getStackPushCount(ins, abc) - getStackPopCount(ins, abc);
}
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
@@ -41,11 +41,6 @@ public class Lf32Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x38, "lf32", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Lf32Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem ofs = stack.pop();
stack.push(new AlchemyLoadAVM2Item(ins, ofs, 'f', 32));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Lf64Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x39, "lf64", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Lf64Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem ofs = stack.pop();
stack.push(new AlchemyLoadAVM2Item(ins, ofs, 'f', 64));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Li16Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x36, "li16", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Li16Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem ofs = stack.pop();
stack.push(new AlchemyLoadAVM2Item(ins, ofs, 'i', 16));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Li32Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x37, "li32", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Li32Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem ofs = stack.pop();
stack.push(new AlchemyLoadAVM2Item(ins, ofs, 'i', 32));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Li8Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x35, "li8", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Li8Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem ofs = stack.pop();
stack.push(new AlchemyLoadAVM2Item(ins, ofs, 'i', 8));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Sf32Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x3D, "sf32", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -57,4 +52,9 @@ public class Sf32Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
output.add(new AlchemyStoreAVM2Item(ins, value, ofs, 'f', 32));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -41,11 +41,6 @@ public class Sf64Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x3E, "sf64", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -57,4 +52,9 @@ public class Sf64Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
output.add(new AlchemyStoreAVM2Item(ins, value, ofs, 'f', 64));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -41,11 +41,6 @@ public class Si16Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x3B, "si16", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -57,4 +52,9 @@ public class Si16Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
output.add(new AlchemyStoreAVM2Item(ins, value, ofs, 'i', 16));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -41,11 +41,6 @@ public class Si32Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x3C, "si32", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -57,4 +52,9 @@ public class Si32Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
output.add(new AlchemyStoreAVM2Item(ins, value, ofs, 'i', 32));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -41,11 +41,6 @@ public class Si8Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x3A, "si8", new int[]{}, true);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -57,4 +52,9 @@ public class Si8Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
output.add(new AlchemyStoreAVM2Item(ins, value, ofs, 'i', 8));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -41,11 +41,6 @@ public class Sxi16Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x52, "sxi16", new int[]{}, false);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Sxi16Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
stack.push(new AlchemySignExtendAVM2Item(ins, value, 16));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Sxi1Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x50, "sxi1", new int[]{}, false);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Sxi1Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
stack.push(new AlchemySignExtendAVM2Item(ins, value, 1));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -41,11 +41,6 @@ public class Sxi8Ins extends InstructionDefinition implements AlchemyTypeIns {
super(0x51, "sxi8", new int[]{}, false);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return 1 - 1;
}
@Override
public int getScopeStackDelta(AVM2Instruction ins, ABC abc) {
return 0;
@@ -56,4 +51,14 @@ public class Sxi8Ins extends InstructionDefinition implements AlchemyTypeIns {
GraphTargetItem value = stack.pop();
stack.push(new AlchemySignExtendAVM2Item(ins, value, 8));
}
@Override
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,12 +45,7 @@ public class AddIIns extends AddIns {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
}
}
@@ -68,12 +68,12 @@ public class AddIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -62,7 +62,12 @@ public class DecrementIIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -62,7 +62,12 @@ public class DecrementIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -74,7 +74,12 @@ public class DivideIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -43,7 +43,12 @@ public class IncrementIIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -43,7 +43,12 @@ public class IncrementIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -59,7 +59,12 @@ public class ModuloIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class MultiplyIIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -67,7 +67,12 @@ public class MultiplyIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -44,7 +44,12 @@ public class NegateIIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -44,7 +44,12 @@ public class NegateIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -43,7 +43,12 @@ public class NotIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class SubtractIIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class SubtractIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,12 +54,12 @@ public class BitAndIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -52,7 +52,12 @@ public class BitNotIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class BitOrIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class BitXorIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class LShiftIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class RShiftIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class URShiftIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,12 @@ public class EqualsIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class GreaterEqualsIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class GreaterThanIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class LessEqualsIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class LessThanIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class StrictEqualsIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -115,7 +115,12 @@ public class ConstructIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -ins.operands[0] - 1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[0] + 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -82,15 +82,13 @@ public class ConstructPropIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -64,7 +64,7 @@ public class ConstructSuperIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -ins.operands[0] - 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[0] + 1;
}
}
@@ -43,7 +43,7 @@ public class NewActivationIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -57,7 +57,12 @@ public class NewArrayIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -ins.operands[0] + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[0];
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -44,7 +44,7 @@ public class NewCatchIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -50,7 +50,12 @@ public class NewClassIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,7 @@ public class NewFunctionIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -63,7 +63,12 @@ public class NewObjectIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -ins.operands[0] * 2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[0] * 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -65,7 +65,12 @@ public class CallIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1 - ins.operands[0];
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[0] + 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -66,12 +66,12 @@ public class CallMethodIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[1] + 1;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1 - ins.operands[1];
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -47,6 +47,7 @@ public class CallPropLexIns extends CallPropertyIns {
for (int a = 0; a < argCount; a++) {
args.add(0, stack.pop());
}
FullMultinameAVM2Item multiname = resolveMultiname(stack, constants, multinameIndex, ins);
GraphTargetItem receiver = stack.pop();
@@ -54,15 +55,13 @@ public class CallPropLexIns extends CallPropertyIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -73,21 +73,8 @@ public class CallPropVoidIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
return ins.operands[1] + 1;
// todo: honfika: add resolveMultiname stack size
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
}
@@ -63,23 +63,21 @@ public class CallPropertyIns extends InstructionDefinition {
for (int a = 0; a < argCount; a++) {
args.add(0, stack.pop());
}
FullMultinameAVM2Item multiname = resolveMultiname(stack, constants, multinameIndex, ins);
FullMultinameAVM2Item multiname = resolveMultiname(stack, constants, multinameIndex, ins);
GraphTargetItem receiver = stack.pop();
stack.push(new CallPropertyAVM2Item(ins, false, receiver, multiname, args));
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -66,7 +66,12 @@ public class CallStaticIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1 - ins.operands[1];
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return ins.operands[1] + 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -70,15 +70,13 @@ public class CallSuperIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -67,19 +67,11 @@ public class CallSuperVoidIns extends InstructionDefinition {
GraphTargetItem receiver = stack.pop();
output.add(new CallSuperAVM2Item(ins, true, receiver, multiname, args));
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -ins.operands[1] - 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return ins.operands[1] + 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
}
@@ -54,7 +54,7 @@ public class IfEqIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -51,7 +51,7 @@ public class IfFalseIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -54,7 +54,7 @@ public class IfGeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfGtIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfLeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfLtIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfNGeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,12 +54,7 @@ public class IfNGtIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
}
@@ -54,7 +54,7 @@ public class IfNLeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfNLtIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,12 +54,7 @@ public class IfNeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
}
}
@@ -54,7 +54,7 @@ public class IfStrictEqIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -54,7 +54,7 @@ public class IfStrictNeIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
}
@@ -50,7 +50,7 @@ public class IfTrueIns extends InstructionDefinition implements IfTypeIns {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -44,7 +44,7 @@ public class LookupSwitchIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -72,6 +72,5 @@ public class DecLocalIIns extends InstructionDefinition {
regAssignCount.put(regId, 0);
}
regAssignCount.put(regId, regAssignCount.get(regId) + 1);
}
}
@@ -79,7 +79,7 @@ public abstract class GetLocalTypeIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@@ -125,7 +125,7 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@@ -134,10 +134,5 @@ public abstract class SetLocalTypeIns extends InstructionDefinition implements S
return AVM2Item.localRegName(localRegNames, getRegisterId(ins));
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1;
}
public abstract int getRegisterId(AVM2Instruction ins);
}
@@ -47,7 +47,6 @@ public class DeletePropertyIns extends InstructionDefinition {
Object obj = lda.operandStack.pop();
//push true if removed*/
throw new RuntimeException("Cannot remove property");
}
@Override
@@ -60,15 +59,13 @@ public class DeletePropertyIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -56,15 +56,13 @@ public class FindPropertyIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -55,15 +55,13 @@ public class FindPropertyStrictIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -57,15 +57,13 @@ public class GetDescendantsIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -58,7 +58,7 @@ public class GetGlobalScopeIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -62,7 +62,7 @@ public class GetGlobalSlotIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -46,7 +46,7 @@ public class GetLexIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -47,39 +47,13 @@ public class GetPropertyIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
int ret = 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
//Note: In official compiler, the stack can be wrong(greater) for some MULTINAMEL/A, e.g. increments
/*
var arr=[1,2,3];
return arr[2]++;
*/
/* todo: honfika
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}*/
return ret;
return 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -1 + 1;
int multinameIndex = ins.operands[0];
//Note: In official compiler, the stack can be wrong(greater) for some MULTINAMEL/A, e.g. increments
/*
var arr=[1,2,3];
return arr[2]++;
*/
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -43,7 +43,7 @@ public class GetScopeObjectIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -81,7 +81,12 @@ public class GetSlotIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -47,15 +47,13 @@ public class GetSuperIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -1 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return 1 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -47,7 +47,7 @@ public class HasNext2Ins extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -46,7 +46,12 @@ public class HasNextIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class InIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -49,21 +49,8 @@ public class InitPropertyIns extends InstructionDefinition {
}
@Override
public int getRequiredStackSize(AVM2Instruction ins) {
return 2;
// todo: honfika: add resolveMultiname stack size
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
int ret = -2;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
int multinameIndex = ins.operands[0];
if (abc.constants.getMultiname(multinameIndex).needsName()) {
ret--;
}
if (abc.constants.getMultiname(multinameIndex).needsNs()) {
ret--;
}
return ret;
return 2 + getMultinameRequiredStackSize(abc.constants, multinameIndex);
}
}
@@ -45,7 +45,12 @@ public class NextNameIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -45,7 +45,12 @@ public class NextValueIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -2 + 1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 2;
}
@Override
public int getStackPushCount(AVM2Instruction ins, ABC abc) {
return 1;
}
}
@@ -43,8 +43,8 @@ public class ReturnValueIns extends InstructionDefinition {
}
@Override
public int getStackDelta(AVM2Instruction ins, ABC abc) {
return -1;
public int getStackPopCount(AVM2Instruction ins, ABC abc) {
return 1;
}
@Override

Some files were not shown because too many files have changed in this diff Show More