localData class added

This commit is contained in:
Honfika
2013-10-13 12:33:15 +02:00
parent b33ac86256
commit fb5af451e2
129 changed files with 494 additions and 340 deletions
@@ -97,6 +97,7 @@ import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemContainer;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Cache;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.ProgressListener;
@@ -1585,7 +1586,7 @@ public class SWF {
GraphSourceItem ins = code.get(ip);
if (debugMode) {
System.err.println("Visit " + ip + ": ofs" + Helper.formatAddress(((Action) ins).getAddress()) + ":" + ((Action) ins).getASMSource(new ArrayList<GraphSourceItem>(), new ArrayList<Long>(), new ArrayList<String>(), code.version, false) + " stack:" + Helper.stackToString(stack, Helper.toList(new ConstantPool())));
System.err.println("Visit " + ip + ": ofs" + Helper.formatAddress(((Action) ins).getAddress()) + ":" + ((Action) ins).getASMSource(new ArrayList<GraphSourceItem>(), new ArrayList<Long>(), new ArrayList<String>(), code.version, false) + " stack:" + Helper.stackToString(stack, LocalData.create(new ConstantPool())));
}
if (ins.isExit()) {
break;
@@ -79,6 +79,7 @@ import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.NotCompileTimeItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.decompiler.graph.model.ScriptEndItem;
import com.jpexs.helpers.Helper;
import java.io.*;
@@ -1531,7 +1532,7 @@ public class AVM2Code implements Serializable {
list.remove(lastPos);
}
s = Graph.graphToString(list, hilighted, replaceIndents, constants, localRegNames, fullyQualifiedNames);
s = Graph.graphToString(list, hilighted, replaceIndents, LocalData.create(constants, localRegNames, fullyQualifiedNames));
return s;
}
@@ -26,6 +26,7 @@ import com.jpexs.decompiler.flash.abc.types.MethodBody;
import com.jpexs.decompiler.flash.abc.types.MethodInfo;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -41,7 +42,7 @@ public class NewClassIns extends InstructionDefinition {
public void translate(boolean isStatic, int scriptIndex, int classIndex, java.util.HashMap<Integer, GraphTargetItem> localRegs, Stack<GraphTargetItem> stack, java.util.Stack<GraphTargetItem> scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List<GraphTargetItem> output, MethodBody body, ABC abc, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames, String path, HashMap<Integer, Integer> localRegsAssignmentIps, int ip, HashMap<Integer, List<Integer>> refs, AVM2Code code) {
int clsIndex = ins.operands[0];
HilightedTextWriter writer = new HilightedTextWriter(false);
stack.pop().toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
stack.pop().toString(writer, LocalData.create(constants, localRegNames, fullyQualifiedNames));
String baseType = writer.toString();
stack.push(new UnparsedAVM2Item(ins, "new " + abc.constants.constant_multiname[abc.instance_info[clsIndex].name_index].getName(constants, fullyQualifiedNames) + ".class extends " + baseType));
}
@@ -29,6 +29,7 @@ import com.jpexs.decompiler.flash.abc.types.MethodBody;
import com.jpexs.decompiler.flash.abc.types.MethodInfo;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
import java.util.Stack;
@@ -54,7 +55,7 @@ public class SetSuperIns extends InstructionDefinition implements SetTypeIns {
int multinameIndex = ins.operands[0];
String multiname = resolveMultinameNoPop(1, stack, abc.constants, multinameIndex, ins, fullyQualifiedNames);
HilightedTextWriter writer = new HilightedTextWriter(false);
stack.get(1 + resolvedCount(abc.constants, multinameIndex)).toString(writer, abc.constants, localRegNames, fullyQualifiedNames);
stack.get(1 + resolvedCount(abc.constants, multinameIndex)).toString(writer, LocalData.create(abc.constants, localRegNames, fullyQualifiedNames));
String obj = writer.toString();
return obj + ".super." + multiname;
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import static com.jpexs.decompiler.graph.GraphTargetItem.PRECEDENCE_PRIMARY;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -35,22 +36,16 @@ public abstract class AVM2Item extends GraphTargetItem {
super(instruction, precedence);
}
@Override
@SuppressWarnings("unchecked")
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
return toString(writer, (ConstantPool) localData.get(0), (HashMap<Integer, String>) localData.get(1), (List<String>) localData.get(2));
}
public abstract HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData);
public abstract HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames);
public String toStringNoH(ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public String toStringNoH(LocalData localData) {
HilightedTextWriter writer = new HilightedTextWriter(false);
toString(writer, constants, localRegNames, fullyQualifiedNames);
toString(writer, localData);
return writer.toString();
}
public String toStringSemicoloned(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return toString(writer, constants, localRegNames, fullyQualifiedNames) + (needsSemicolon() ? ";" : "");
public String toStringSemicoloned(HilightedTextWriter writer, LocalData localData) {
return toString(writer, localData) + (needsSemicolon() ? ";" : "");
}
@Override
@@ -58,7 +53,7 @@ public abstract class AVM2Item extends GraphTargetItem {
return true;
}
protected HilightedTextWriter formatProperty(HilightedTextWriter writer, ConstantPool constants, GraphTargetItem object, GraphTargetItem propertyName, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
protected HilightedTextWriter formatProperty(HilightedTextWriter writer, GraphTargetItem object, GraphTargetItem propertyName, LocalData localData) {
boolean empty = false;
if (object instanceof LocalRegAVM2Item) {
if (((LocalRegAVM2Item) object).computedValue != null) {
@@ -71,12 +66,12 @@ public abstract class AVM2Item extends GraphTargetItem {
if (!empty) {
if (object.precedence > PRECEDENCE_PRIMARY) {
hilight("(", writer);
object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
object.toString(writer, localData);
hilight(")", writer);
empty = false;
} else {
int writerLength = writer.getLength();
object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
object.toString(writer, localData);
if (writerLength == writer.getLength()) {
empty = true;
}
@@ -84,18 +79,18 @@ public abstract class AVM2Item extends GraphTargetItem {
}
if (empty) {
return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return propertyName.toString(writer, localData);
}
if (propertyName instanceof FullMultinameAVM2Item) {
if (((FullMultinameAVM2Item) propertyName).name != null) {
return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return propertyName.toString(writer, localData);
} else {
hilight(".", writer);
return propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return propertyName.toString(writer, localData);
}
} else {
hilight("[", writer);
propertyName.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
propertyName.toString(writer, localData);
return hilight("]", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -39,9 +40,9 @@ public class AlchemyLoadAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("op_" + name + "(", writer);
ofs.toString(writer, constants, localRegNames, fullyQualifiedNames);
ofs.toString(writer, localData);
return hilight(") /*Alchemy*/", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -38,9 +39,9 @@ public class AlchemySignExtendAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("op_" + name + "(", writer);
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
value.toString(writer, localData);
return hilight(") /*Alchemy*/", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -40,11 +41,11 @@ public class AlchemyStoreAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("op_" + name + "(", writer);
ofs.toString(writer, constants, localRegNames, fullyQualifiedNames);
ofs.toString(writer, localData);
hilight(",", writer);
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
value.toString(writer, localData);
return hilight(") /*Alchemy*/", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -36,8 +37,8 @@ public class ApplyTypeAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
object.toString(writer, localData);
if (!params.isEmpty()) {
hilight(".<", writer);
for (int i = 0; i < params.size(); i++) {
@@ -48,7 +49,7 @@ public class ApplyTypeAVM2Item extends AVM2Item {
if (p instanceof NullAVM2Item) {
hilight("*", writer);
} else {
p.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
p.toString(writer, localData);
}
}
hilight(">", writer);
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class BooleanAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight(value ? "true" : "false", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -37,7 +38,7 @@ public class CallAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
/*String recPart = ""; receiver.toString(constants, localRegNames) + hilight(".", writer);
if (receiver instanceof NewActivationAVM2Item) {
recPart = "";
@@ -47,17 +48,17 @@ public class CallAVM2Item extends AVM2Item {
}*/
if (function.precedence > precedence) {
hilight("(", writer);
function.toString(writer, constants, localRegNames, fullyQualifiedNames);
function.toString(writer, localData);
hilight(")", writer);
} else {
function.toString(writer, constants, localRegNames, fullyQualifiedNames);
function.toString(writer, localData);
}
hilight("(", writer);
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
arguments.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -38,8 +39,8 @@ public class CallMethodAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
receiver.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
receiver.toString(writer, localData);
hilight(".", writer);
hilight(methodName, writer);
hilight("(", writer);
@@ -47,7 +48,7 @@ public class CallMethodAVM2Item extends AVM2Item {
if (a > 0) {
hilight(",", writer);
}
arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
arguments.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -39,14 +40,14 @@ public class CallPropertyAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
formatProperty(writer, constants, receiver, propertyName, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
formatProperty(writer, receiver, propertyName, localData);
hilight("(", writer);
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
arguments.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -38,8 +39,8 @@ public class CallStaticAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
receiver.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
receiver.toString(writer, localData);
hilight(".", writer);
hilight(methodName, writer);
hilight("(", writer);
@@ -47,7 +48,7 @@ public class CallStaticAVM2Item extends AVM2Item {
if (a > 0) {
hilight(",", writer);
}
arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
arguments.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -40,20 +41,20 @@ public class CallSuperAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
if (!receiver.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) {
receiver.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (!receiver.toString(false, localData).equals("this")) {
receiver.toString(writer, localData);
hilight(".", writer);
}
hilight("super.", writer);
multiname.toString(writer, constants, localRegNames, fullyQualifiedNames);
multiname.toString(writer, localData);
hilight("(", writer);
String args = "";
for (int a = 0; a < arguments.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
arguments.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
arguments.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.types.Multiname;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class ClassAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return hilight(className.getName(constants, fullyQualifiedNames), writer);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight(className.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer);
}
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.ecma.Null;
import com.jpexs.decompiler.flash.ecma.Undefined;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -37,9 +38,9 @@ public class CoerceAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
//return hilight("("+type+")", highlight)+
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
@Override
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -35,19 +36,19 @@ public class ConstructAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (object instanceof NewFunctionAVM2Item) {
hilight("new ", writer);
return object.toString(writer, constants, localRegNames, fullyQualifiedNames);
return object.toString(writer, localData);
}
hilight("new ", writer);
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
object.toString(writer, localData);
hilight("(", writer);
for (int a = 0; a < args.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
args.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -37,20 +38,20 @@ public class ConstructPropAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("new ", writer);
int idx = writer.getLength();
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
object.toString(writer, localData);
if (idx < writer.getLength()) {
hilight(".", writer);
}
propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames);
propertyName.toString(writer, localData);
hilight("(", writer);
for (int a = 0; a < args.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
args.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -36,9 +37,9 @@ public class ConstructSuperAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) {
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (!object.toString(false, localData).equals("this")) {
object.toString(writer, localData);
hilight(".", writer);
}
hilight("super(", writer);
@@ -46,7 +47,7 @@ public class ConstructSuperAVM2Item extends AVM2Item {
if (a > 0) {
hilight(",", writer);
}
args.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
args.get(a).toString(writer, localData);
}
return hilight(")", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -36,8 +37,8 @@ public class ConvertAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return value.toString(writer, localData);
}
@Override
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,8 +33,8 @@ public class DecLocalAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
hilight(localRegName(localRegNames, regIndex), writer);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight(localRegName(localData.localRegNames, regIndex), writer);
return hilight("--", writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,8 +33,8 @@ public class DecrementAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
value.toString(writer, localData);
return hilight("-1", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -38,8 +39,8 @@ public class DefaultXMLNamespace extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("default xml namespace = ", writer);
return ns.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return ns.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -36,9 +37,9 @@ public class EscapeXAttrAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("{", writer);
value.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
value.toString(writer, localData);
return hilight("}", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -38,9 +39,9 @@ public class EscapeXElemAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("{", writer);
expression.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
expression.toString(writer, localData);
return hilight("}", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -38,7 +39,7 @@ public class FilteredCheckAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return object.toString(writer, localData);
}
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class FindPropertyAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return writer;
}
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class FloatValueAVM2Item extends NumberValueAVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("" + value, writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.types.Namespace;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -58,13 +59,13 @@ public class FullMultinameAVM2Item extends AVM2Item {
public boolean isXML(ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
String cname;
if (name != null) {
cname = name.toString(false, constants, localRegNames, fullyQualifiedNames);
cname = name.toString(false, LocalData.create(constants, localRegNames, fullyQualifiedNames));
} else {
cname = (constants.constant_multiname[multinameIndex].getName(constants, fullyQualifiedNames));
}
String cns = "";
if (namespace != null) {
cns = namespace.toString(false, constants, localRegNames, fullyQualifiedNames);
cns = namespace.toString(false, LocalData.create(constants, localRegNames, fullyQualifiedNames));
} else {
Namespace ns = constants.constant_multiname[multinameIndex].getNamespace(constants);
if ((ns != null) && (ns.name_index != 0)) {
@@ -75,9 +76,9 @@ public class FullMultinameAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (namespace != null) {
namespace.toString(writer, constants, localRegNames, fullyQualifiedNames);
namespace.toString(writer, localData);
hilight("::", writer);
} else {
/*Namespace ns = constants.constant_multiname[multinameIndex].getNamespace(constants);
@@ -87,9 +88,11 @@ public class FullMultinameAVM2Item extends AVM2Item {
}
if (name != null) {
hilight("[", writer);
name.toString(writer, constants, localRegNames, fullyQualifiedNames);
name.toString(writer, localData);
hilight("]", writer);
} else {
ConstantPool constants = localData.constantsAvm2;
List<String> fullyQualifiedNames = localData.fullyQualifiedNames;
hilight(constants.constant_multiname[multinameIndex].getName(constants, fullyQualifiedNames), writer);
}
return writer;
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -35,9 +36,9 @@ public class GetDescendantsAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
object.toString(writer, localData);
hilight("..", writer);
return multiname.toString(writer, constants, localRegNames, fullyQualifiedNames);
return multiname.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.types.Multiname;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class GetLexAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return hilight(propertyName.getName(constants, fullyQualifiedNames), writer);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight(propertyName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -35,7 +36,7 @@ public class GetPropertyAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return formatProperty(writer, object, propertyName, localData);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.types.Multiname;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -36,10 +37,10 @@ public class GetSlotAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (slotName == null) {
return hilight("/*UnknownSlot*/", writer);
}
return hilight(slotName.getName(constants, fullyQualifiedNames), writer);
return hilight(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -36,12 +37,12 @@ public class GetSuperAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) {
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (!object.toString(false, localData).equals("this")) {
object.toString(writer, localData);
hilight(".", writer);
}
hilight("super.", writer);
return propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames);
return propertyName.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -40,9 +41,9 @@ public class HasNextAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
collection.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
collection.toString(writer, localData);
hilight(" hasNext ", writer);
return object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return object.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -35,9 +36,9 @@ public class InAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
object.toString(writer, localData);
hilight(" in ", writer);
return collection.toString(writer, constants, localRegNames, fullyQualifiedNames);
return collection.toString(writer, localData);
}
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,8 +33,8 @@ public class IncLocalAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
hilight(localRegName(localRegNames, regIndex), writer);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight(localRegName(localData.localRegNames, regIndex), writer);
return hilight("++", writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,8 +33,8 @@ public class IncrementAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
value.toString(writer, localData);
return hilight("+1", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -38,10 +39,10 @@ public class InitPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, A
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
formatProperty(writer, object, propertyName, localData);
hilight(" = ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
@Override
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class IntegerValueAVM2Item extends NumberValueAVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("" + value, writer);
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.clauses.FilterAVM2Item;
import com.jpexs.decompiler.flash.ecma.Undefined;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -50,11 +51,11 @@ public class LocalRegAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (computedValue instanceof FilterAVM2Item) {
return computedValue.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return computedValue.toString(writer, localData);
}
return hilight(localRegName(localRegNames, regIndex), writer);
return hilight(localRegName(localData.localRegNames, regIndex), writer);
}
@Override
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,10 +33,11 @@ public class NameSpaceAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (namespaceIndex == 0) {
return hilight("*", writer);
}
ConstantPool constants = localData.constantsAvm2;
return hilight(constants.constant_namespace[namespaceIndex].toString(constants), writer);
}
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.decompiler.graph.model.TernarOpItem;
import java.util.HashMap;
import java.util.List;
@@ -35,15 +36,15 @@ public class NameValuePair extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
name.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
name.toString(writer, localData);
hilight(":", writer);
if (value instanceof TernarOpItem) { //Ternar operator contains ":"
hilight("(", writer);
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
value.toString(writer, localData);
hilight(")", writer);
} else {
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
value.toString(writer, localData);
}
return writer;
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -29,7 +30,7 @@ public class NanAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("NaN", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class NewActivationAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("newactivation()", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,13 +34,13 @@ public class NewArrayAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("[", writer);
for (int a = 0; a < values.size(); a++) {
if (a > 0) {
hilight(",", writer);
}
values.get(a).toString(writer, constants, localRegNames, fullyQualifiedNames);
values.get(a).toString(writer, localData);
}
return hilight("]", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -42,7 +43,7 @@ public class NewFunctionAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("function" + (!functionName.equals("") ? " " + functionName : ""), writer);
boolean highlight = writer.getIsHighlighted();
String mhead = "(" + (highlight ? paramStr : Highlighting.stripHilights(paramStr)) + "):" + (highlight ? returnStr : Highlighting.stripHilights(returnStr));
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class NewObjectAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
boolean singleLine = pairs.size() < 2;
if (!singleLine) {
writer.appendNewLine();
@@ -48,7 +49,7 @@ public class NewObjectAVM2Item extends AVM2Item {
if (n > 0) {
hilight(",", writer).appendNewLine();
}
pairs.get(n).toString(writer, constants, localRegNames, fullyQualifiedNames);
pairs.get(n).toString(writer, localData);
}
if (!singleLine) {
writer.appendNewLine();
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -40,11 +41,11 @@ public class NextNameAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("nextName(", writer);
index.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
index.toString(writer, localData);
hilight(",", writer);
obj.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
obj.toString(writer, localData);
return hilight(")", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -40,11 +41,11 @@ public class NextValueAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("nextValue(", writer);
index.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
index.toString(writer, localData);
hilight(",", writer);
obj.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
obj.toString(writer, localData);
return hilight(")", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.ecma.Null;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -30,7 +31,7 @@ public class NullAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("null", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -35,8 +36,8 @@ public class PostDecrementAVM2Item extends AVM2Item implements AssignmentAVM2Ite
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
object.toString(writer, localData);
return hilight("--", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -35,8 +36,8 @@ public class PostIncrementAVM2Item extends AVM2Item implements AssignmentAVM2Ite
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
object.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
object.toString(writer, localData);
return hilight("++", writer);
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.ExitItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -34,8 +35,8 @@ public class ReturnValueAVM2Item extends AVM2Item implements ExitItem {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("return ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.ExitItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -30,7 +31,7 @@ public class ReturnVoidAVM2Item extends AVM2Item implements ExitItem {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("return", writer);
}
}
@@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -35,7 +36,7 @@ public class ScriptAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("script" + scriptIndex, writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -41,9 +42,9 @@ public class SetGlobalSlotAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("setglobalslot(" + slotId + ",", writer);
value.toString(writer, constants, localRegNames, fullyQualifiedNames);
value.toString(writer, localData);
return hilight(")", writer);
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -36,9 +37,9 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
hilight(localRegName(localRegNames, regIndex) + " = ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight(localRegName(localData.localRegNames, regIndex) + " = ", writer);
return value.toString(writer, localData);
}
@Override
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.clauses.AssignmentAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -44,10 +45,10 @@ public class SetPropertyAVM2Item extends AVM2Item implements SetTypeAVM2Item, As
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
formatProperty(writer, constants, object, propertyName, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
formatProperty(writer, object, propertyName, localData);
hilight(" = ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
@Override
@@ -23,6 +23,7 @@ import com.jpexs.decompiler.flash.abc.types.Multiname;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -45,15 +46,13 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
getName(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
getName(writer, localData);
hilight(" = ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
public String getName(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
String ret = "";
public HilightedTextWriter getName(HilightedTextWriter writer, LocalData localData) {
/*ret = scope.toString(constants, localRegNames) + ".";
if (!(scope instanceof NewActivationAVM2Item)) {
ret = scope.toString(constants, localRegNames) + ".";
@@ -66,9 +65,9 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign
}
}*/
if (slotName == null) {
return ret + hilight("/*UnknownSlot*/", writer);
return hilight("/*UnknownSlot*/", writer);
}
return ret + hilight(slotName.getName(constants, fullyQualifiedNames), writer);
return hilight(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames), writer);
}
@Override
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.graph.GraphPart;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -44,15 +45,15 @@ public class SetSuperAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
if (!object.toString(false, constants, localRegNames, fullyQualifiedNames).equals("this")) {
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (!object.toString(false, localData).equals("this")) {
object.toString(writer, localData);
hilight(".", writer);
}
hilight("super.", writer);
propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames);
propertyName.toString(writer, localData);
hilight(" = ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
@Override
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class StringAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("\"" + Helper.escapeString(value) + "\"", writer);
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.types.Multiname;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class ThisAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("this", writer);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,8 +33,8 @@ public class ThrowAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("throw ", writer);
return value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return value.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.ecma.Undefined;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -30,7 +31,7 @@ public class UndefinedAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("undefined", writer);
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -32,7 +33,7 @@ public class UnparsedAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight(value, writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -43,9 +44,9 @@ public class WithAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("with(", writer);
scope.toString(writer, constants, localRegNames, fullyQualifiedNames);
scope.toString(writer, localData);
hilight(")", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class WithEndAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight("}", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class WithObjectAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return writer;
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -37,12 +38,12 @@ public class XMLAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
for (GraphTargetItem part : parts) {
if (part instanceof StringAVM2Item) {
hilight(((StringAVM2Item) part).value, writer);
} else {
part.toString(writer, constants, localRegNames, fullyQualifiedNames);
part.toString(writer, localData);
}
}
return writer;
@@ -24,6 +24,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.SetSlotAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -48,7 +49,7 @@ public class DeclarationAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (assignment instanceof SetLocalAVM2Item) {
SetLocalAVM2Item lti = (SetLocalAVM2Item) assignment;
String type = "*";
@@ -59,19 +60,19 @@ public class DeclarationAVM2Item extends AVM2Item {
type = ((ConvertAVM2Item) lti.value).type;
}
hilight("var ", writer);
hilight(localRegName(localRegNames, lti.regIndex) + ":" + type + " = ", writer);
return lti.value.toString(writer, constants, localRegNames, fullyQualifiedNames);
hilight(localRegName(localData.localRegNames, lti.regIndex) + ":" + type + " = ", writer);
return lti.value.toString(writer, localData);
}
if (assignment instanceof SetSlotAVM2Item) {
SetSlotAVM2Item ssti = (SetSlotAVM2Item) assignment;
hilight("var ", writer);
ssti.getName(writer, constants, localRegNames, fullyQualifiedNames);
ssti.getName(writer, localData);
hilight(":", writer);
hilight(type, writer);
hilight(" = ", writer);
return ssti.value.toString(writer, constants, localRegNames, fullyQualifiedNames);
return ssti.value.toString(writer, localData);
}
hilight("var ", writer);
return assignment.toString(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames));
return assignment.toString(writer, localData);
}
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.abc.avm2.ConstantPool;
import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
import com.jpexs.decompiler.flash.abc.types.ABCException;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -33,7 +34,7 @@ public class ExceptionAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
return hilight(exception.getVarName(constants, fullyQualifiedNames), writer);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return hilight(exception.getVarName(localData.constantsAvm2, localData.fullyQualifiedNames), writer);
}
}
@@ -21,6 +21,7 @@ import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -40,10 +41,10 @@ public class FilterAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
collection.toString(writer, constants, localRegNames, fullyQualifiedNames);
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
collection.toString(writer, localData);
hilight(".(", writer);
expression.toString(writer, constants, localRegNames, fullyQualifiedNames);
expression.toString(writer, localData);
return hilight(")", writer);
}
}
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model.clauses;
import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.Block;
import com.jpexs.decompiler.graph.Graph;
@@ -26,8 +27,10 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.Loop;
import com.jpexs.decompiler.graph.model.ContinueItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.decompiler.graph.model.LoopItem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ForEachInAVM2Item extends LoopItem implements Block {
@@ -69,7 +72,7 @@ public class ForEachInAVM2Item extends LoopItem implements Block {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("loop" + loop.id + ":", writer).appendNewLine();
hilight("for each (", writer);
expression.toString(writer, localData);
@@ -78,7 +81,7 @@ public class ForEachInAVM2Item extends LoopItem implements Block {
hilight(Graph.INDENTOPEN, writer).appendNewLine();
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).appendNewLine();
ti.toStringSemicoloned(writer, localData.constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.abc.avm2.model.clauses;
import com.jpexs.decompiler.flash.abc.avm2.model.InAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.Block;
import com.jpexs.decompiler.graph.Graph;
@@ -26,8 +27,10 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.Loop;
import com.jpexs.decompiler.graph.model.ContinueItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.decompiler.graph.model.LoopItem;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ForInAVM2Item extends LoopItem implements Block {
@@ -69,7 +72,7 @@ public class ForInAVM2Item extends LoopItem implements Block {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("loop" + loop.id + ":", writer).appendNewLine();
hilight("for (", writer);
expression.toString(writer, localData);
@@ -78,7 +81,7 @@ public class ForInAVM2Item extends LoopItem implements Block {
hilight(Graph.INDENTOPEN, writer).appendNewLine();
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).appendNewLine();
ti.toStringSemicoloned(writer, localData.constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -24,6 +24,7 @@ import com.jpexs.decompiler.graph.Block;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.ContinueItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.ArrayList;
import java.util.HashMap;
@@ -54,27 +55,27 @@ public class TryAVM2Item extends AVM2Item implements Block {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("try", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
for (GraphTargetItem ti : tryCommands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine();
ti.toStringSemicoloned(writer, localData.constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
hilight("}", writer);
for (int e = 0; e < catchExceptions.size(); e++) {
writer.appendNewLine();
hilight("catch(" + catchExceptions.get(e).getVarName(constants, fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(constants, fullyQualifiedNames) + ")", writer);
hilight("catch(" + catchExceptions.get(e).getVarName(localData.constantsAvm2, localData.fullyQualifiedNames) + ":" + catchExceptions.get(e).getTypeName(localData.constantsAvm2, localData.fullyQualifiedNames) + ")", writer);
writer.appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
List<GraphTargetItem> commands = catchCommands.get(e);
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine();
ti.toStringSemicoloned(writer, localData.constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -87,7 +88,7 @@ public class TryAVM2Item extends AVM2Item implements Block {
hilight(Graph.INDENTOPEN, writer).appendNewLine();
for (GraphTargetItem ti : finallyCommands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, Helper.toList(constants, localRegNames, fullyQualifiedNames)).appendNewLine();
ti.toStringSemicoloned(writer, localData.constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -17,11 +17,14 @@
package com.jpexs.decompiler.flash.abc.avm2.model.operations;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
import com.jpexs.decompiler.flash.ecma.EcmaType;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.BinaryOpItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
public class AddAVM2Item extends BinaryOpItem {
@@ -31,7 +34,7 @@ public class AddAVM2Item extends BinaryOpItem {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (rightSide.precedence >= precedence) { //string + vs number +
if (leftSide.precedence > precedence) {
hilight("(", writer);
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
@@ -37,11 +38,11 @@ public class DeletePropertyAVM2Item extends AVM2Item {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
hilight("delete ", writer);
object.toString(writer, constants, localRegNames, fullyQualifiedNames);
object.toString(writer, localData);
hilight("[", writer);
propertyName.toString(writer, constants, localRegNames, fullyQualifiedNames);
propertyName.toString(writer, localData);
return hilight("]", writer);
}
}
@@ -17,10 +17,13 @@
package com.jpexs.decompiler.flash.abc.avm2.model.operations;
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
import com.jpexs.decompiler.flash.action.model.ConstantPool;
import com.jpexs.decompiler.flash.ecma.EcmaScript;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.BinaryOpItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
public class SubtractAVM2Item extends BinaryOpItem {
@@ -35,7 +38,7 @@ public class SubtractAVM2Item extends BinaryOpItem {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
if (rightSide.precedence >= precedence) { // >= add or subtract too
if (leftSide.precedence > precedence) {
hilight("(", writer);
@@ -25,6 +25,7 @@ import com.jpexs.decompiler.flash.helpers.hilight.Highlighting;
import com.jpexs.decompiler.flash.tags.ABCContainerTag;
import com.jpexs.decompiler.graph.Graph;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.HashMap;
import java.util.List;
@@ -92,7 +93,7 @@ public class TraitSlotConst extends Trait implements TraitWithSlot {
}
if (assignedValue != null) {
valueStr = Highlighting.trim(assignedValue.toString(highlight, abc.constants, new HashMap<Integer, String>(), fullyQualifiedNames));
valueStr = Highlighting.trim(assignedValue.toString(highlight, LocalData.create(abc.constants, new HashMap<Integer, String>(), fullyQualifiedNames)));
if (highlight && (parent instanceof TraitClass)) {
TraitClass tc = (TraitClass) parent;
int traitInitId = abc.class_info[tc.class_info].static_traits.traits.length
@@ -56,6 +56,7 @@ import com.jpexs.decompiler.graph.GraphSourceItemContainer;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.CommentItem;
import com.jpexs.decompiler.graph.model.IfItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.decompiler.graph.model.NotItem;
import com.jpexs.decompiler.graph.model.ScriptEndItem;
import com.jpexs.helpers.Helper;
@@ -726,7 +727,7 @@ public class Action implements GraphSourceItem {
List<GraphTargetItem> tree = actionsToTree(new HashMap<Integer, String>(), new HashMap<String, GraphTargetItem>(), new HashMap<String, GraphTargetItem>(), actions, version, staticOperation, path);
return Graph.graphToString(tree, highlight, true);
return Graph.graphToString(tree, highlight, true, new LocalData());
}
}, timeout, TimeUnit.SECONDS);
} catch (TimeoutException ex) {
@@ -40,6 +40,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemContainer;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.NotCompileTimeItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import com.jpexs.helpers.ReReadableInputStream;
import java.io.ByteArrayInputStream;
@@ -667,12 +668,12 @@ public class ActionListReader {
if (a instanceof GraphSourceItemContainer) {
atos = a.toString();
}
System.err.println("readActionListAtPos ip: " + (ip - startIp) + " (0x" + Helper.formatAddress(ip - startIp) + ") " + " action(len " + a.actionLength + "): " + atos + (a.isIgnored() ? " (ignored)" : "") + " stack:" + Helper.stackToString(stack, Helper.toList(cpool)) + " " + Helper.byteArrToString(a.getBytes(version)));
System.err.println("readActionListAtPos ip: " + (ip - startIp) + " (0x" + Helper.formatAddress(ip - startIp) + ") " + " action(len " + a.actionLength + "): " + atos + (a.isIgnored() ? " (ignored)" : "") + " stack:" + Helper.stackToString(stack, LocalData.create(cpool)) + " " + Helper.byteArrToString(a.getBytes(version)));
@SuppressWarnings("unchecked")
HashMap<String, GraphTargetItem> vars = (HashMap<String, GraphTargetItem>) localData.get(1);
System.err.print("variables: ");
for (Map.Entry<String, GraphTargetItem> v : vars.entrySet()) {
System.err.print("'" + v + "' = " + v.getValue().toString(false, cpool) + ", ");
System.err.print("'" + v + "' = " + v.getValue().toString(false, LocalData.create(cpool)) + ", ");
}
System.err.println();
String add = "";
@@ -22,8 +22,10 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public abstract class ActionItem extends GraphTargetItem implements Serializable {
@@ -38,11 +40,6 @@ public abstract class ActionItem extends GraphTargetItem implements Serializable
public abstract HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants);
public HilightedTextWriter toString(HilightedTextWriter writer) {
ConstantPool c = null;
return toString(writer, c);
}
protected boolean isEmptyString(GraphTargetItem target) {
if (target instanceof DirectValueActionItem) {
if (((DirectValueActionItem) target).value instanceof String) {
@@ -69,12 +66,8 @@ public abstract class ActionItem extends GraphTargetItem implements Serializable
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
if (localData.isEmpty()) {
ConstantPool c = null;
return toString(writer, c);
}
return toString(writer, (ConstantPool) localData.get(0));
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return toString(writer, localData.constants);
}
protected List<GraphSourceItem> toSourceCall(List<Object> localData, SourceGenerator gen, List<GraphTargetItem> list) {
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.List;
public class CallFunctionActionItem extends ActionItem {
@@ -50,7 +51,7 @@ public class CallFunctionActionItem extends ActionItem {
if (t > 0) {
hilight(",", writer);
}
arguments.get(t).toStringNL(writer, constants);
arguments.get(t).toStringNL(writer, LocalData.create(constants));
}
return hilight(")", writer);
}
@@ -23,6 +23,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.ArrayList;
import java.util.List;
@@ -79,7 +80,7 @@ public class CallMethodActionItem extends ActionItem {
if (t > 0) {
hilight(",", writer);
}
arguments.get(t).toStringNL(writer, constants);
arguments.get(t).toStringNL(writer, LocalData.create(constants));
}
return hilight(")", writer);
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.ArrayList;
import java.util.List;
@@ -50,7 +51,7 @@ public class CastOpActionItem extends ActionItem {
hilight("(", writer);
stripQuotes(constructor, constants, writer);
hilight(")", writer);
return object.toString(writer, Helper.toList(constants));
return object.toString(writer, LocalData.create(constants));
}
@Override
@@ -86,7 +86,7 @@ public class DirectValueActionItem extends ActionItem {
}
@Override
public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toStringNoQuotes(HilightedTextWriter writer, ConstantPool constants) {
if (value instanceof Double) {
if (Double.compare((double) (Double) value, 0) == 0) {
return hilight("0", writer);
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.ArrayList;
import java.util.List;
@@ -43,7 +44,7 @@ public class EnumerateActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("enumerate ", writer);
return object.toString(writer, Helper.toList(constants));
return object.toString(writer, LocalData.create(constants));
}
@Override
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.ArrayList;
import java.util.List;
@@ -36,9 +37,7 @@ public class ExtendsActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
List<Object> localData = new ArrayList<>();
localData.add(constants);
subclass.toString(writer, localData);
subclass.toString(writer, LocalData.create(constants));
hilight(" extends ", writer);
return stripQuotes(superclass, constants, writer);
}
@@ -30,6 +30,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.ArrayList;
import java.util.HashMap;
@@ -98,7 +99,7 @@ public class FunctionActionItem extends ActionItem {
hilight(")", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, constants));
writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, LocalData.create(constants)));
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
return hilight("}", writer);
}
@@ -20,6 +20,7 @@ import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.List;
@@ -36,13 +37,13 @@ public class ImplementsOpActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
subclass.toString(writer, Helper.toList(constants));
subclass.toString(writer, LocalData.create(constants));
hilight(" implements ", writer);
for (int i = 0; i < superclasses.size(); i++) {
if (i > 0) {
hilight(",", writer);
}
superclasses.get(i).toString(writer, Helper.toList(constants));
superclasses.get(i).toString(writer, LocalData.create(constants));
}
return writer;
}
@@ -19,6 +19,8 @@ package com.jpexs.decompiler.flash.action.model;
import com.jpexs.decompiler.flash.helpers.HilightedTextWriter;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.HashMap;
import java.util.List;
/**
@@ -45,7 +47,7 @@ public class TemporaryRegister extends GraphTargetItem {
}
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, List<Object> localData) {
public HilightedTextWriter toString(HilightedTextWriter writer, LocalData localData) {
return value.toString(writer, localData);
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.List;
@@ -35,7 +36,7 @@ public class ThrowActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("throw ", writer);
return value.toString(writer, Helper.toList(constants));
return value.toString(writer, LocalData.create(constants));
}
@Override
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.List;
@@ -35,7 +36,7 @@ public class ToNumberActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("Number(", writer);
value.toString(writer, Helper.toList(constants));
value.toString(writer, LocalData.create(constants));
return hilight(")", writer);
}
@@ -22,6 +22,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.List;
@@ -35,7 +36,7 @@ public class ToStringActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("String(", writer);
value.toString(writer, Helper.toList(constants));
value.toString(writer, LocalData.create(constants));
return hilight(")", writer);
}
@@ -24,6 +24,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphSourceItemPos;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.LocalData;
import com.jpexs.helpers.Helper;
import java.util.List;
@@ -37,7 +38,7 @@ public class TypeOfActionItem extends ActionItem {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("typeof(", writer);
value.toString(writer, Helper.toList(constants));
value.toString(writer, LocalData.create(constants));
return hilight(")", writer);
}
@@ -85,11 +85,11 @@ public class ClassActionItem extends ActionItem implements Block {
}
Set<String> allMembers = new HashSet<>();
for (GraphTargetItem it : allUsages) {
allMembers.add(it.toStringNoQuotes(false, new ArrayList<>()));
allMembers.add(it.toStringNoQuotes(false, null));
}
uninitializedVars.addAll(allMembers);
for (MyEntry<GraphTargetItem, GraphTargetItem> v : vars) {
String s = v.key.toStringNoQuotes(false, new ArrayList<>());
String s = v.key.toStringNoQuotes(false, null);
if (uninitializedVars.contains(s)) {
uninitializedVars.remove(s);
}
@@ -158,10 +158,10 @@ public class ClassActionItem extends ActionItem implements Block {
@Override
public HilightedTextWriter toString(HilightedTextWriter writer, ConstantPool constants) {
hilight("class ", writer);
className.toStringNoQuotes(writer, Helper.toList(constants));
className.toStringNoQuotes(writer, constants);
if (extendsOp != null) {
hilight(" extends ", writer);
extendsOp.toStringNoQuotes(writer, Helper.toList(constants));
extendsOp.toStringNoQuotes(writer, constants);
}
if (!implementsOp.isEmpty()) {
hilight(" implements ", writer);
@@ -26,6 +26,7 @@ import com.jpexs.decompiler.graph.GraphSourceItem;
import com.jpexs.decompiler.graph.GraphTargetItem;
import com.jpexs.decompiler.graph.SourceGenerator;
import com.jpexs.decompiler.graph.model.ContinueItem;
import com.jpexs.decompiler.graph.model.LocalData;
import java.util.ArrayList;
import java.util.List;
@@ -51,7 +52,7 @@ public class IfFrameLoadedActionItem extends ActionItem implements Block {
hilight(")", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, constants));
writer.appendNoHilight(Graph.graphToString(actions, writer.getIsHighlighted(), false, LocalData.create(constants)));
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
return hilight("}", writer);
}
@@ -62,11 +62,9 @@ public class TryActionItem extends ActionItem implements Block {
hilight("try", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
List<Object> localData = new ArrayList<>();
localData.add(constants);
for (GraphTargetItem ti : tryCommands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).appendNewLine();
ti.toStringSemicoloned(writer, constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -74,14 +72,14 @@ public class TryActionItem extends ActionItem implements Block {
for (int e = 0; e < catchExceptions.size(); e++) {
writer.appendNewLine();
hilight("catch(", writer);
catchExceptions.get(e).toStringNoQuotes(writer, localData);
catchExceptions.get(e).toStringNoQuotes(writer, constants);
hilight(")", writer).appendNewLine();
hilight("{", writer).appendNewLine();
hilight(Graph.INDENTOPEN, writer).appendNewLine();
List<GraphTargetItem> commands = catchCommands.get(e);
for (GraphTargetItem ti : commands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).appendNewLine();
ti.toStringSemicoloned(writer, constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();
@@ -94,7 +92,7 @@ public class TryActionItem extends ActionItem implements Block {
hilight(Graph.INDENTOPEN, writer).appendNewLine();
for (GraphTargetItem ti : finallyCommands) {
if (!ti.isEmpty()) {
ti.toStringSemicoloned(writer, localData).appendNewLine();
ti.toStringSemicoloned(writer, constants).appendNewLine();
}
}
hilight(Graph.INDENTCLOSE, writer).appendNewLine();

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